JAVA - 如何避免MySQL中的值重复?

时间:2016-09-21 00:27:48

标签: java mysql duplicates

我是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很新。我希望你能回答我的问题。非常感谢,祝你有个美好的一天! :)

2 个答案:

答案 0 :(得分:0)

通常,在数据库中,可以通过创建唯一索引或约束来防止重复记录。实际上,这些基本上是相同的(使用唯一索引实现了唯一约束)。

因此,如果您希望email是唯一的,则可以执行以下操作:

create unique index unq_guestlist_email on guestlist(email);

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

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

答案 1 :(得分:0)

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

但是,如果您还想在java中验证插入数据而没有错误,那么当您插入寄存器时,您可以验证属于您的唯一值的列,而不是重复。