今天,我遇到了这种情况:程序启动,照常工作,显示消息,表明数据已正确输入数据库,但没有执行。我再次运行了脚本,它运行良好,但是有趣的是,尽管它未能插入数据,但它没有引发异常。

是否存在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/

10-09 06:15