执行批处理方法返回 java 中值 -2 的数组

2022-09-01 13:01:16

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

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

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

谢谢,迪佩什·尤尼亚尔


答案 1

jdbc 规范对批处理更新的返回代码有如下说明:

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

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

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

预言机文档指出:

• 对于预准备语句批处理,不可能知道批处理中每个单独语句在数据库中影响的行数。因此,所有数组元素的值为 -2。根据 JDBC 2.0 规范,值 -2 表示操作成功,但受影响的行数未知。

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

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

因此,似乎如果您需要更新计数,则不能使用s,但必须回退到普通s。PreparedStatementStatement


答案 2

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

规格


推荐