我是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 :(得分:0)
通常,在数据库中,可以通过创建唯一索引或约束来防止重复记录。实际上,这些基本上是相同的(使用唯一索引实现了唯一约束)。
因此,如果您希望email
是唯一的,则可以执行以下操作:
create unique index unq_guestlist_email on guestlist(email);
当然,您可以指定多个列,因此所有列的组合必须是唯一的。
然后,如果您尝试插入已存在的记录,则数据库将返回错误。 (您可以通过各种方式忽略此错误。)
答案 1 :(得分:0)
在mysql中,您可以使用唯一的约束(http://www.w3schools.com/sql/sql_unique.asp)。
但是,如果您还想在java中验证插入数据而没有错误,那么当您插入寄存器时,您可以验证属于您的唯一值的列,而不是重复。