我正在使用Db2-400 (Db2 i)
JDBC
批处理将记录插入prepared statement
数据库中的表中。表中有主键。
当批处理中的任何语句具有重复的键时,它将引发BatchUpdateException
(这是预期的)。但是,当存在BatchUpdateException
时,它将使所有其他所有语句批量失效。
假设批处理有5条语句。仅在第3条语句上例外。然后,第4和第5条语句也会失败。
它与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()
我希望所有这些语句都能成功执行,没有任何异常。