0

我正在使用批处理在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()

我希望所有这些语句都能成功执行,没有任何异常。

4

0 回答 0