Java 如何防止Jtable和MYSQL(数据库)中的重复条目?
这里的主要问题是,检测Jtable中的重复条目,当您第三次输入相同/相同的数据时,重复条目的检测将起作用。它在第二次运行时将不起作用,并且会重复。 如何在mysql中添加唯一约束?我不知道怎么做。请告诉我如何执行它的具体说明 JAVA NETBEANS 数据库:MYSQL 我想问题在于我不理解的那部分是“试抓”部分。提前谢谢。 这是我的密码:Java 如何防止Jtable和MYSQL(数据库)中的重复条目?,java,mysql,duplicates,jtable,try-catch,Java,Mysql,Duplicates,Jtable,Try Catch,这里的主要问题是,检测Jtable中的重复条目,当您第三次输入相同/相同的数据时,重复条目的检测将起作用。它在第二次运行时将不起作用,并且会重复。 如何在mysql中添加唯一约束?我不知道怎么做。请告诉我如何执行它的具体说明 JAVA NETBEANS 数据库:MYSQL 我想问题在于我不理解的那部分是“试抓”部分。提前谢谢。 这是我的密码: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
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();
}
您对结果集调用了两次next()
,一次在print语句中调用,一次在if
中调用,这导致了问题
因此,根据当前代码,如果您已经有一个条目,则对next()
的第一次调用将指向该条目,第二次调用将返回false。这就是为什么它在第三行条目上检测到重复
所以只需删除
System.out.println(rs.next())代码>和您的代码应该按预期工作。只需在mysql中添加一个唯一的约束,并在插入后检查重复的键错误。@Shadow您能给我具体的说明吗?我一点儿也不知道怎么做。