Java 验证spring JDBC批更新的成功

Java 验证spring JDBC批更新的成功,java,jdbc,spring-jdbc,batch-updates,Java,Jdbc,Spring Jdbc,Batch Updates,我使用SpringJDBCTemplateBatchUpdate在批处理中插入数据。我想验证数据是否已成功插入。JDBCTemplate batchUpdate返回一个int[][],那么验证数据是否插入的正确方法是什么 这表示“所有批处理更新方法都返回一个int数组,其中包含每个批处理条目受影响的行数。此计数由JDBC驱动程序报告,并且并不总是可用,在这种情况下,JDBC驱动程序只返回一个-2值”。我无法理解这里返回-2值的意义。这是否意味着插入不成功?-2不一定意味着错误,可能如上所述,受影

我使用SpringJDBCTemplateBatchUpdate在批处理中插入数据。我想验证数据是否已成功插入。JDBCTemplate batchUpdate返回一个int[][],那么验证数据是否插入的正确方法是什么


这表示“所有批处理更新方法都返回一个int数组,其中包含每个批处理条目受影响的行数。此计数由JDBC驱动程序报告,并且并不总是可用,在这种情况下,JDBC驱动程序只返回一个-2值”。我无法理解这里返回-2值的意义。这是否意味着插入不成功?

-2不一定意味着错误,可能如上所述,受影响行的计数不可用

编辑

-2是Statement.SUCCESS\u NO\u INFO的值(而EXECUTE\u FAILED为-3)。因此,除非驱动程序不符合JDBC规范,-2无疑意味着成功

编辑结束

错误通过以下方式报告:

通常,如果在批处理脚本中运行N个查询,则会在结果中获得每个查询i的更新计数:

int result[] = jdbcTemplate.batchUpdate(sql);
因此:

将保留第一个查询的更新计数

result[1]

将保留第二次查询的更新计数等。

那么这是否意味着即使我得到-2,该查询的插入也可能成功?值得一提的是,
-2
是的值(而
执行失败的
-3
)。因此,除非驱动程序不符合JDBC规范,
-2
明确表示成功。@markRotteveel,谢谢您的评论。添加到答案中。我想不出批处理结果是
-3
并且没有引发异常的场景。但请记住,驱动程序可能会在异常发生后决定继续执行批处理(并在异常结束时抛出所有接收到的异常),或者立即放弃(不执行批处理的其余部分)。因此,当您遇到
-3
时,并不一定意味着批处理的下一个元素也失败了。@DharmvirTiwari禁用自动提交并在异常时回滚。有些驱动程序在第一个错误时停止,有些驱动程序将继续。这是无法配置的(除非可能是以特定于驱动程序的方式,但不知道示例)。
result[1]