这里的主要问题是,在Jtable中检测重复项,当您第三次输入SAME / IDENTICAL数据时,重复项检测将起作用。它将无法再次运行并重复。
如何在mysql中添加唯一约束?我不知道该怎么做。请让我对如何执行
有具体说明JAVA NETBEANS
数据库:MYSQL
我认为问题在于尝试捕获部分,这是我不理解的部分。预先谢谢您。
这里有我的代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String first = firstname.getText();
String last = lastname.getText();
String gen = gender.getText();
String strand = cboStrand.getSelectedItem().toString();
String aged = age.getText();
String add = address.getText();
try{
String sql;
sql = "INSERT INTO idusjavanew"
+ "(fname,lname,sex,strand,age,address)"
+ "VALUES (?,?,?,?,?,?)";
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/idusjavanew?zeroDateTimeBehavior=convertToNull","root","");
pst = con.prepareStatement(sql);
pst.setString(1, firstname.getText());
pst.setString(2, lastname.getText());
pst.setString(3, gender.getText());
pst.setString(4, cboStrand.getSelectedItem().toString());
pst.setString(5, age.getText());
pst.setString(6, address.getText());
String selectQuery;
selectQuery = "select * from idusjavanew where fname ='"+first+"' and lname='"+last+"'";
System.out.println(selectQuery);
rs = pst.executeQuery(selectQuery);
System.out.println(rs.next());
if (rs.next()==false){
pst.executeUpdate();
JOptionPane.showMessageDialog(null , "Information has been recorded!");
showTableData();
}
else{
JOptionPane.showMessageDialog(null,"Information already added!");
showTableData();
}
}
catch(HeadlessException | SQLException ex)
{
JOptionPane.showMessageDialog(null,ex);
}
showTableData();
}
答案 0 :(得分:1)
您要在结果集上调用next()
两次,在打印语句中一次,在if
中一次,这是导致问题的原因。
因此,根据您当前的代码,如果您已经有一个条目,则对next()
的第一次调用将指向该条目,而第二次调用将返回false。这就是为什么它在第三行条目中检测到重复项。
因此只需删除System.out.println(rs.next());
,您的代码即可按预期工作。