我正在用Java编写一个程序,将大量信息插入MySQL数据库,并需要跟踪失败的次数和原因。我理解executeUpdate()
将返回受SQL语句影响的行数。
int rows = stmt.executeUpdate("INSERT/UPDATE...");
我的问题是,如果返回值为0(在这种情况下没有例外),有没有办法找到导致INSERT/UPDATE
不起作用的可能原因?
答案 0 :(得分:2)
对于UPDATE,返回值为0很明显:没有更新行。 对于INSERT,我能想到的唯一情况是当你尝试执行INSERT SELECT(...)并且SELECT的结果包含0行时。
答案 1 :(得分:1)
嗯,它并没有失败。零代表没有变化。 我看到了两种获取更多信息的方法。
使用返回false的stmt.execute()然后检查整数值。如果它是-1,那么结果就是一个坏迹象。
使用结果集进行插入/更新/删除操作。但是您需要检索要更新的确切数据/ .....
注意:如果抛出异常,你会在catch块中获得更友好的消息,exc.getMessage()