Как я могу предотвратить повторяющиеся записи в Jtable и MYSQL (база данных)? - PullRequest
0 голосов
/ 03 марта 2019

Ну, главная проблема здесь в том, что обнаружение дублированных записей в Jtable, обнаружение дублированных записей будет работать, когда вы введете те же / идентичные данные в третий раз.Это не будет работать во второй раз и дублировать.

Как я могу добавить уникальное ограничение в моем MySQL?я не знаю как это сделать.Пожалуйста, дайте мне конкретные инструкции о том, как его выполнить

2-я попытка (дубликат)

3-я попытка (обнаружение работает)

база данных

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


}                                        

1 Ответ

0 голосов
/ 03 марта 2019

Вы вызываете next() дважды в своем наборе результатов, один раз в операторе печати и один раз в if, что вызывает проблему.

Таким образом, согласно вашему текущему коду, если у вас уже есть запись,1-й вызов next() укажет на эту запись, а второй вызов вернет false.Вот почему он обнаруживает дубликаты в записи третьей строки.

Так что просто удалите System.out.println(rs.next());, и ваш код должен работать как задумано.

...