在具有相同值的jtable中删除多行
Multiple rows deleting in jtable with the same value
我正在制作一个 java swing 项目,我已连接到我的数据库并将所有值调用到 JTable 中,当您单击 Jtable 中的一行并单击删除按钮时,在我的框架中,然后单击该值已删除,但我有一个错误,因为如果您尝试删除一个值(例如,如果您删除数字 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
class' 字段并将数据库中的 id 存储到该字段
textArea.setText(rs.getString("Description"));
id=rs.getLong("id");
然后可以使用id
删除
String query = "Delete from PostNotice where id=?";
...
pst.setLong(1, id);
我正在制作一个 java swing 项目,我已连接到我的数据库并将所有值调用到 JTable 中,当您单击 Jtable 中的一行并单击删除按钮时,在我的框架中,然后单击该值已删除,但我有一个错误,因为如果您尝试删除一个值(例如,如果您删除数字 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
class' 字段并将数据库中的 id 存储到该字段
textArea.setText(rs.getString("Description"));
id=rs.getLong("id");
然后可以使用id
删除
String query = "Delete from PostNotice where id=?";
...
pst.setLong(1, id);