遇到错误后,executeBatch()方法不会执行其余语句

2020-08-30 05:38发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我试图在下面编写使用sa...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我试图在下面编写使用sap hana db的jdbc驱动程序的代码。

我正在尝试批量插入,演示代码如下

(我已经创建了ID为主键的Employee表,因此记录3将失败。)

字符串psBatchquery ="插入SYSTEM.Employee(id,name)值(?,?)

 batchPs = con.prepareStatement(psBatchquery);
 最终的int batchSize = 2;
 int count = 0;

 对于(int i = 0; i <8; i ++){
   如果(i == 3){
 batchPs.setInt(1,i%2);
 batchPs.setString(2,"名称" + i);
   }其他{
 batchPs.setInt(1,i);
 batchPs.setString(2,"名称" + i);
   }
   batchPs.addBatch();
   如果(++ count%batchSize == 0){
     batchPs.executeBatch();
   }
 }
 batchPs.executeBatch()

这将导致仅插入前3条记录。 有什么办法仍然可以插入记录4到7,而只有记录3会被停止插入?

executeBatch()方法在遇到错误后不会执行添加到批处理中的其余语句

付费偷看设置
发送
2条回答
派大星 ヾ
1楼-- · 2020-08-30 06:14

否,该旧批处理没有选项。 executeBatch函数将引发错误,该错误将停止对" batch"条目的处理。

天桥码农
2楼-- · 2020-08-30 06:28

如果我在for循环中处理内部executeBatch()方法的异常(如上所示),可以,接下来的语句仍将执行

如果(++ count%batchSize == 0){
    尝试{
 batchPs.executeBatch();
    }
    捕获(BatchUpdateException a){
 a.printStackTrace();
    }
 } 

一周热门 更多>