データベースに接続してすべての値をJTableに呼び出し、Java Swingプロジェクトを作成し、フレーム内でJtableの行をクリックして削除ボタンをクリックすると、値が削除されますが、バグがあります。値を削除しようとした場合(たとえば、uが数値1を削除した場合)、jtableに別の同じ値(数値1)がある場合、両方が削除されます
問題はこのコードにあると思います
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();
}
});
実際には、ID(または別の主キー)への参照を保持し、主キー値でレコードを削除する必要があります。
あなたがコーディングする場合、それは例えばLong id
クラスのフィールドを意味し、DBからフィールドにIDを保存します
textArea.setText(rs.getString("Description"));
id=rs.getLong("id");
次に、を使用しid
て削除できます
String query = "Delete from PostNotice where id=?";
...
pst.setLong(1, id);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加