我的问题是,当我在JTable中突出显示并删除一行时,它会删除所有行。我只想删除选定的行。下面是我的代码:
int row = tb_records.getSelectedRow();
DefaultTableModel model= (DefaultTableModel)tb_records.getModel();
String selected = model.getValueAt(row, 0).toString();
if (row >= 0) {
model.removeRow(row);
try {
Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "hey");
PreparedStatement ps = conn.prepareStatement("delete from records where Date='"+selected+"' ");
ps.executeUpdate();
}
catch (Exception w) {
JOptionPane.showMessageDialog(this, "Connection Error!");
}
}
这里会有什么问题呢?如何删除数据库中的选定行而不是所有行?
发布于 2020-01-30 18:49:24
DefaultTableModel model = (DefaultTableModel) jTable.getModel();
int row = jTable.getSelectedRow();
String eve = jTable.getModel().getValueAt(row, 0).
String delRow = "delete from user where id="+eve;
try {
ps = myCon.getConnection().prepareStatement(delRow);
ps.execute();
JOptionPane.showMessageDialog(null, "Congratulation !!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
发布于 2013-12-15 00:14:42
1)不显示自己的消息。显示异常中的错误消息,因为它可以更好地解释问题所在。
2)对SQL使用合适的PreparedStatement。你不太可能犯语法错误。类似于:
String sql = "delete from records where Date= ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString( 1, selected );
stmt.executeUpdate();
我对SQL不太了解,但也许您需要传递一个Date对象,而不是String对象,因为where子句使用的是Date?
https://stackoverflow.com/questions/20585028
复制相似问题