Jdbc批处理插入在Db2 i中失败的语句后使所有语句失败

时间:2019-02-08 09:53:27

标签: java jdbc db2-400 jt400

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

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

0 个答案:

没有答案