当我在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.
| 归档时间: | 
 | 
| 查看次数: | 21127 次 | 
| 最近记录: |