2014-02-10 38 views
1

今天我遇到这种情况:程序启动时,像往常一样工作,显示消息,数据已正确输入到数据库中,但它没有这样做。我再次运行了脚本,它运行良好,但有趣的是它没有抛出异常,虽然它没有插入数据。Java ExecuteUpdate失败并且没有抛出异常

是否有这种情况下Statement.executeUpdate(insertQuery)可以失败而不会引发异常?

回答

4

尽管没有抛出异常就不会发生故障,但是命令可以完成,但效果与您的期望不符,但实际上并未失败。

例如,如果您发出更新行的命令,但您为更新指定的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 
} 
+0

我的问题就来了在INSERT查询中,但我想我明白你的意思。谢谢。 – user2227904