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作为更新计数,而不管受每个操作影响的行数。

这样看来,如果您需要更新计数,则不能使用PreparedStatements,而必须退回到纯Statements。

以上是 ExecuteBatch方法在Java中返回值-2的数组 的全部内容, 来源链接: utcz.com/qa/421646.html

回到顶部