我正在用Java写一个程序,向我的MySQL DB插入一堆信息,并且需要跟踪失败的次数和原因。我知道executeUpdate()
将返回受SQL语句影响的行数。失败的原因executeUpdate(“INSERT ...”);
int rows = stmt.executeUpdate("INSERT/UPDATE...");
我的问题是,如果返回值是0(在这种情况下也不例外),是有办法找到导致INSERT/UPDATE
到不行的可能原因是什么?
我正在用Java写一个程序,向我的MySQL DB插入一堆信息,并且需要跟踪失败的次数和原因。我知道executeUpdate()
将返回受SQL语句影响的行数。失败的原因executeUpdate(“INSERT ...”);
int rows = stmt.executeUpdate("INSERT/UPDATE...");
我的问题是,如果返回值是0(在这种情况下也不例外),是有办法找到导致INSERT/UPDATE
到不行的可能原因是什么?
对于UPDATE,返回值0很明显:没有行更新。 对于INSERT,我能想到的唯一情况是当您尝试执行INSERT SELECT(...)并且SELECT的结果包含0行时。
好吧,它没有失败。零代表没有变化。 我看到了两种获取更多信息的方法。
使用stmt.execute()返回false,然后检查整数值。如果它是-1,那么结果就是一个不好的迹象。
使用用于插入/更新/删除操作的结果集。但是,你需要获取确切的数据,你想更新/ .....
注:假如一个异常被扔,你会在catch块,exc.getMessage变得更友好的消息()
如果UPDATE不会失败,返回0结果的唯一可能性是如果找不到记录。对于INSERT,我无法想象一种情况。 –
考虑在mysql数据库上启用错误日志记录。它将包含一个故障列表,其中包含(有时是隐晦的)原因描述。 – DwB