【问题标题】:JAVA - How to avoid duplication of values in MySQL?JAVA - 如何避免 MySQL 中的值重复?
【发布时间】:2017-01-29 01:30:57
【问题描述】:

我是 MySQL 新手。我这里有问题。我有一个向数据库插入数据的查询,但我的问题是如何避免重复记录。

这是我的代码:

private void btnSaveGuestActionPerformed(java.awt.event.ActionEvent evt) {                                             

    String name = nameTextField.getText();
    String address = addressTextField.getText();
    String nationality = nationalityTextField.getText();
    String com = comNameTextField.getText();
    String email = emailTextField.getText();
    String contact = contactNoTextField.getText();

    if( name.isEmpty() || address .isEmpty() ||  nationality.isEmpty() || com.isEmpty() ||  email.isEmpty() ||  contact.isEmpty() ){
            JOptionPane.showMessageDialog(null, "Please input any of the following.");
    }
    else{
        try{
            String query = "INSERT INTO guestlist (Name, address, Nationality, CompanyName, email, contactNo)"
                         + "VALUES ?, ?, ?, ?, ?, ?";
    PreparedStatement pst = conn.prepareStatement(query);
            ResultSet rs = pst.executeQuery("SELECT * FROM guestlist");

    pst.setString(1, nameTextField.getText());
            pst.setString(2, addressTextField.getText());
            pst.setString(3, nationalityTextField.getText());
    pst.setString(4, comNameTextField.getText());
    pst.setString(5, emailTextField.getText());
    pst.setString(6, contactNoTextField.getText());

            pst.execute();


    pst.close();
    }catch(Exception e){
                JOptionPane.showMessageDialog(null, e);
            }
    }
}

很抱歉我在这里的无知,但我对 DBMS 很陌生。我希望你能回答我的问题。非常感谢,祝您有愉快的一天! :)

【问题讨论】:

    标签: java mysql duplicates


    【解决方案1】:

    在一般数据库中,您通过创建唯一索引或约束来防止记录重复。实际上,这些基本上是一回事(唯一约束是使用唯一索引实现的)。

    所以,如果您希望 email 独一无二,您可以这样做:

    create unique index unq_guestlist_email on guestlist(email);
    

    当然,您可以指定多个列,因此所有列的组合必须是唯一的。

    然后,如果您尝试插入已经存在的记录,数据库将返回错误。 (您可以通过多种方式忽略此错误。)

    【讨论】:

    • 这意味着,为了避免重复,我所要做的就是将其更改为 UNIQUE? (如果我没记错的话。)
    • @jhenryj09 。 . .我不确定“它”指的是什么,但唯一索引或约束让数据库负责维护唯一性。
    • 你有提到的例子吗?如果你不介意的话,我可以给我一份吗? :)
    【解决方案2】:

    在 mysql 中,您可以使用唯一约束 (http://www.w3schools.com/sql/sql_unique.asp)。

    但是,如果您还想在 java 中验证插入数据而没有错误,则在插入寄存器时,您可以验证作为唯一值一部分的列,而不是重复。

    【讨论】:

      猜你喜欢
      • 2015-08-09
      • 2019-03-07
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      相关资源
      最近更新 更多