Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止Jtable和MYSQL(数据库)中的重复条目?_Java_Mysql_Duplicates_Jtable_Try Catch - Fatal编程技术网

Java 如何防止Jtable和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) {

这里的主要问题是,检测Jtable中的重复条目,当您第三次输入相同/相同的数据时,重复条目的检测将起作用。它在第二次运行时将不起作用,并且会重复。

如何在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();


}                                        
您对结果集调用了两次
next()
,一次在print语句中调用,一次在
if
中调用,这导致了问题

因此,根据当前代码,如果您已经有一个条目,则对
next()
的第一次调用将指向该条目,第二次调用将返回false。这就是为什么它在第三行条目上检测到重复


所以只需删除
System.out.println(rs.next())和您的代码应该按预期工作。

只需在mysql中添加一个唯一的约束,并在插入后检查重复的键错误。@Shadow您能给我具体的说明吗?我一点儿也不知道怎么做。