ExecuteBatch方法在Java中返回值-2的数组
当我在Java中执行executeBatch方法时,它会返回一个正常的int数组,但该值是所有数组元素的-2,
它应该是0或+ ve数字,以显示受影响的行数,但返回-2,
当我在数据库中检查它时,所有更新均成功完成。请说明此-2是什么意思,以及如何找到受影响的行数。
谢谢,Deepesh Uniyal
回答:
关于批处理更新的返回码,jdbc-spec有以下说法:
■0或更大-命令已成功处理,值是一个更新计数,指示受命令执行影响的数据库中的行数第14章批更新121
■Statement.SUCCESS_NO_INFO-命令已成功处理,但受影响的行数未知
Statement.SUCCESS_NO_INFO被定义为-2,因此您的结果表明一切正常,但是您将无法获得有关更新列数的信息。
oracle文档说明:
•对于准备好的语句批处理,不可能知道该批处理中每个单独的语句在数据库中影响的行数。因此,所有数组元素的值都为-2。根据JDBC
2.0规范,值-2表示操作成功,但是受影响的行数未知。
•对于泛型语句批处理,该数组包含实际更新计数,这些计数指示受每个操作影响的行数。只有在标准批处理的Oracle实现中具有通用语句的情况下,才能提供实际的更新计数。
•对于可调用语句批处理,服务器始终返回值1作为更新计数,而不管受每个操作影响的行数。
这样看来,如果您需要更新计数,则不能使用PreparedStatement
s,而必须退回到纯Statement
s。
以上是 ExecuteBatch方法在Java中返回值-2的数组 的全部内容, 来源链接: utcz.com/qa/421646.html