我已经创建了一个带有名为users的表的sql数据库。它包含user_id,user_name和电子邮件。我创建了一个表单,该表单允许用户搜索任何记录,并将过滤后的记录显示在上JTable
。
我想删除基于搜索值的搜索结果过滤的行,这意味着用户可以搜索user_id,user_name或email。
用户{user_id,user_name,电子邮件}
这就是我所拥有的
private void deleteSelectedRows(){
try {
String sql = "DELETE from user where ? = ?";
pst = conn.prepareStatement(sql);
pst.setString(1, searchTxt.getText());
pst.setString(2, searchTxt.getText());
((DefaultTableModel)userTable.getModel()).removeRow(userTable.getSelectedRow());
pst.execute();
} catch (Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
searchTxt
是文本字段。此代码删除表中的所有行。
如果将其更改为DELETE from user where user_id = ?
,则仅在user_id搜索该行时才删除该行。
用户{user_id,user_name,电子邮件}
private void deleteSelectedRows(){
try {
String sql = "DELETE from user where ? = ?";
pst = conn.prepareStatement(sql);
pst.setString(1, searchTxt.getText());
pst.setString(2, searchTxt.getText());
((DefaultTableModel) userTable.getModel()).removeRow(userTable.getSelectedRow());
pst.execute();
} catch (Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
使用该代码,您将始终对表进行完全删除,因为您始终TRUE
在WHERE子句中获得a
如果searchTxt.getText()
为“ hello”,则准备好的语句将为
DELETE from user where hello = hello
相当于
DELETE from user where true
或者
DELETE from user
您只需要区分searchTxt
和columnName
private void deleteSelectedRows(){
try {
String sql = "DELETE from user where ? = ?";
pst = conn.prepareStatement(sql);
pst.setString(1, columnName);
pst.setString(2, searchTxt.getText());
((DefaultTableModel) userTable.getModel()).removeRow(userTable.getSelectedRow());
pst.execute();
} catch (Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句