ExecuteBatch方法在java中返回值为-2的数组

Dee*_*yal 23 java oracle jdbc

当我在java中执行executeBatch方法时,它返回一个很好的int数组,但是所有数组元素的值都是-2,

它应该是0或+ ve数字,显示受影响的行数,但它返回-2,

当我在数据库中检查它时,所有更新都成功完成.请解释这-2的含义是什么,以及我如何找到受影响的行数.

谢谢,Deepesh Uniyal

pie*_*t.t 35

关于批量更新的返回代码,jdbc-spec有如下说明:

■0或更高 - 命令已成功处理,值为更新计数,指示数据库中受命令执行影响的行数第14章批处理更新121

■Statement.SUCCESS_NO_INFO - 命令已成功处理,但受影响的行数未知

Statement.SUCCESS_NO_INFO定义为-2,因此您的结果表明一切正常,但您不会获得有关更新列数的信息.

oracle文档说明:

•对于预准备语句批处理,无法通过批处理中的每个单独语句了解数据库中受影响的行数.因此,所有数组元素的值都为-2.根据JDBC 2.0规范,值-2表示操作成功但受影响的行数未知.

•对于通用语句批处理,该数组包含实际更新计数,指示每个操作影响的行数.只有在标准批处理的Oracle实现中的通用语句的情况下才能提供实际的更新计数.

•对于可调用语句批处理,服务器始终返回值1作为更新计数,而不考虑每个操作影响的行数.

因此,如果您需要更新计数,您似乎无法使用PreparedStatements,但必须回归到平原Statement.


Thi*_*thi 6

值-2表示元素已成功处理,但受影响的行数未知.

眼镜