我正在编写一个程序,用户可以手动进行查询,结果显示在 jtable 中,例如:
userQuery= "DELETE FROM cds WHERE Nro_cd = 4;"
我正在使用这段代码
if (statement.execute(userQuery)){
ResultSet rs = statement.executeQuery(userQuery);
table.setModel(DbUtils.resultSetToTableModel(rs));
JOptionPane.showMessageDialog(null, "Consulta Realizada");
rs.close();
}
else {
statement.executeUpdate(userQuery);
JOptionPane.showMessageDialog(null, "Modificacion Realizada");
}
我的问题是,当我执行更新时,我没有得到结果集,是否有办法从更新的表中进行选择?
最佳答案
My problem is when i execute an update i dont get a resultset ...
这是正确的。您可以获得的最多结果是受影响的行数(即在您的示例中已删除)
... is there anyway to do a select from the table that was udpated?
我假设您询问是否有一种方法可以选择查找在上一个语句中删除/更新的行。
不,没有。
首先,如果行已被删除,它们将不会被查询。 (显然!)
常规数据库没有版本控制。您无法看到插入/更新/删除之前数据库的状态。
<小时/>如果您需要知道删除或更新了哪些记录,我认为最好的选择是重组代码来执行此操作:
- 开始交易:
- 选择要更新或删除的行。
- 读取选择的结果集并在应用程序中记录您需要的内容......或者可能在临时表中。
- 执行更新/删除
- 提交交易。
现在您可以使用第 3 步中记录的信息。
<小时/>另请参阅:
关于java - 显示由executeUpdate()修改的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40569226/