2016-09-21 54 views
0

我是MySQL新手。我在这里遇到问题。我有一个查询插入数据到数据库,但我的问题是如何避免重复的记录。JAVA - 如何避免在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。我希望你能回答我的问题。非常感谢,祝你有美好的一天! :)

回答

0

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

所以,如果你想email是独一无二的,你可以这样做:

create unique index unq_guestlist_email on guestlist(email); 

当然,你也可以指定多个列,那么所有列的组合必须是唯一的。

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

+0

那么,为了避免重复,我所要做的就是把它变成UNIQUE? (如果我没有弄错。) – jhenryj09

+0

@ jhenryj09。 。 。我不确定“它”是指什么,但是唯一的索引或约束使数据库负责维护唯一性。 –

+0

你有没有提到过那些例子?如果你不介意,我可以有这些副本吗? :) – jhenryj09

0

在mysql中你可以使用唯一的constrainst(http://www.w3schools.com/sql/sql_unique.asp)。

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