我正在使用批处理在Db2-400 (Db2 i)
数据库的表中插入记录。JDBC
prepared statement
表中有主键。
当批处理中的任何语句具有重复键时,它会抛出BatchUpdateException
(这是预期的)。但是当有 a 时BatchUpdateException
,它会批量失败所有进一步的语句。
假设批处理有 5 个语句。例外仅在第 3 条语句中。然后第四条和第五条语句也失败了。
它与 Db2 LUW 不同,后者成功地执行了失败语句之后的所有语句。
例子:
UQTEST 表具有第一列主要。当 i 的值为 3 时,代码将键添加为 2,以使语句的键重复。
PreparedStatement stmt = conn.prepareStatement("INSERT INTO LIBTEST.UQTEST VALUES(?, ?)");
for (int i = 1; i <=5; i++)
{
if (i ==3)
{
stmt.setInt(1, 2);
}
else
{
stmt.setInt(1, i);
}
stmt.setString(2, "Abc");
stmt.addBatch();
}
try
{
stmt.executeBatch();
}
catch(BatchUpdateException ex)
{
int[] updatecounts = ex.getUpdateCounts();
System.out.printlns(updatecounts);
}
运行此代码后,表中仅插入 2 条记录:
1 Abc
2 Abc
我正在使用 jt400.jar 和使用的 JDBC 驱动程序是:
com.ibm.as400.access.AS400JDBCDriver()
我希望所有这些语句都能成功执行,没有任何异常。