【问题标题】:How can I prevent duplicate entries in Jtable and MYSQL(database)?如何防止 Jtable 和 MYSQL(数据库)中的重复条目?
【发布时间】:2019-07-24 14:23:52
【问题描述】:

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

如何在我的 mysql 中添加唯一约束?我不知道该怎么做。请让我具体说明如何执行它

2nd try (duplicate)

3rd try(the detection works)

database

JAVA NETBEANS

数据库:MYSQL

我认为问题出在 try-catch 部分,这是我不理解的部分。提前致谢。

这是我的代码:

 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();


}                                        

【问题讨论】:

  • 只需在mysql中添加唯一约束,插入后检查是否有重复键错误。
  • @Shadow 你能给我具体的说明吗?我不知道该怎么做。

标签: java mysql duplicates jtable try-catch


【解决方案1】:

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

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

因此,只需删除 System.out.println(rs.next());,您的代码就会按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    相关资源
    最近更新 更多