验证spring JDBC批量更新是否成功

Ayu*_*shi 7 java jdbc spring-jdbc batch-updates

我使用Spring JDBCTemplate batchUpdate批量插入数据.我想验证数据是否已成功插入.JDBCTemplate batchUpdate返回一个int [] [],这是验证数据是否插入的正确方法?

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

avi*_*iad 12

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

编辑

-2是Statement.SUCCESS_NO_INFO的值(而EXECUTE_FAILED是-3).因此,除非驱动程序不符合JDBC规范,否则-2明确表示成功

编辑结束

通过BatchUpdateException报告错误

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

int result[] = jdbcTemplate.batchUpdate(sql);
Run Code Online (Sandbox Code Playgroud)

所以:

result[0]
Run Code Online (Sandbox Code Playgroud)

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

result[1]
Run Code Online (Sandbox Code Playgroud)

将保留第二个查询等的更新计数.

  • 值得一提的是,`-2`是[`Statement.SUCCESS_NO_INFO`]的值(http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#SUCCESS_NO_INFO) (而'EXECUTE_FAILED`是`-3`).因此,除非驱动程序不符合JDBC规范,否则`-2`意味着成功. (3认同)
  • 我想不出批处理结果为"-3"并且没有抛出异常的情况.但请记住,驱动程序可能会决定在异常后继续执行批处理(并在完成时抛出所有收到的异常),或立即放弃(不执行批处理的其余部分).所以当你遇到`-3`时,并不一定意味着批次的下一个元素也失败了. (2认同)