今天,我遇到了这种情况:程序启动,照常工作,显示消息,表明数据已正确输入数据库,但没有执行。我再次运行了脚本,它运行良好,但是有趣的是,尽管它未能插入数据,但它没有引发异常。
是否存在Statement.executeUpdate(insertQuery)失败而不会引发异常的情况?
最佳答案
尽管不引发异常就不会发生故障,但是命令可以完成与您的期望不符的效果,但不会真正失败。
例如,如果发出命令更新行,但表中不存在为更新指定的ID,则该命令在技术上将成功,但是从您的角度来看,更新将失败,因为没有行已更改:
PreparedStatement upd = con.prepareStatement(
"UPDATE mytable SET complete=1 WHERE id=?"
);
upd.setInt(1, 12345); // If 12345 does not exist...
upd.executeUpdate(); // ...this update does not change anything
要检测类似情况,您可以检查命令已更新了多少行,并在更新次数为零时执行以下操作:
int changed = upd.executeUpdate();
if (changed != 1) {
// Something didn't go according to our expectations
}
关于java - Java ExecuteUpdate失败且未引发异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21683031/