2016-09-21 55 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中驗證插入數據沒有錯誤,那麼當您插入寄存器時,您可以驗證屬於您的唯一值的一部分的列,不要重複。