2015-01-08 5 views
0

im, создающий проект java swing, который подключен к моей базе данных и вызывает все значения в JTable, в моем кадре, когда вы нажимаете на строку в Jtable и нажимаете кнопку delete то значение будет удалено, но у меня есть ошибка, потому что если вы попытаетесь удалить значение (например, если u удалите номер 1), и в jtable будет другое значение (номер 1), то оба они будут удалятьНесколько строк, удаляющихся в jtable с одинаковым значением

Я думаю, что проблема в этом коде

public void mouseClicked(MouseEvent arg0) { 
      try { 
       int row = table.getSelectedRow(); 
       String Description = (table.getModel().getValueAt(row, 1)).toString(); 

       String query = "select * from PostNotice where Description='" + Description + "'"; 
       PreparedStatement pst = connection.prepareStatement(query); 

       ResultSet rs = pst.executeQuery(); 

       while (rs.next()) { 
        textArea.setText(rs.getString("Description")); 
       } 

       pst.close(); 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
      } 
     } 

Это для удаления

 public void actionPerformed(ActionEvent e) { 


      String query = "Delete from PostNotice where Description =?"; 
      try { 

       PreparedStatement pst = connection.prepareStatement(query); 
       pst.setString(1, textArea.getText()); 
       pst.execute(); 
       JOptionPane.showMessageDialog(null, "Post Deleted"); 

       pst.close(); 

      } catch (Exception ex) 
      { 
       ex.printStackTrace(); 
      } 
      textArea.setText(""); 
      textArea.requestFocus(); 
      refreshtable(); 
     } 

    }); 
+0

где удалить запрос? или удалить логику? –

ответ

1

На самом деле вам необходимо сохранить ссылку на ID (или другой первичный ключ) и удалить запись по значению первичного ключа.

Для этого кода это означает, например, Long id класса поле и хранить идентификатор из БД в поле

textArea.setText(rs.getString("Description")); 
id=rs.getLong("id"); 

Затем вы можете использовать id удалить

String query = "Delete from PostNotice where id=?"; 
... 
pst.setLong(1, id); 
Смежные вопросы