PreparedStatement.executeBatch返回结果不准确

PreparedStatement.executeBatch的方法在底层调用了一个void的executeForRows的方法来执行,他们很懒,为了复用这个方法,于是就失去了返回值,也就无法知道当前执行的语句到底返回了什么。
 但是jdbc2.0规范规定,如果执行成功但无法知道结果,则返回-2.所以oracle的PreparedStatement.executeBatch把每条语句的返回设为-2.一般在编程中这个返回值可以判断执行成功。但无法知道确切的影响到的行数。


int[] counts = pstat.executeBatch();
这个语句返回的counts数据不够准确(全是负数),应该使用 getUpdateCount() 来获取。


你可能感兴趣的:(PreparedStatement.executeBatch返回结果不准确)