识别 JDBC 中的executeBatch()失败

问题描述 投票:0回答:2

我正在使用以下代码将数据插入表中。

test_conn.setAutoCommit(false);
stmt = test_conn.prepareStatement("INSERT INTO ...");

while(RSet.next()){
   for(int i = 1; i <= columnCount; i++){
       stmt.setString(i, RSet.getString(i));
   }
   stmt.addBatch();
}

stmt.executeBatch();
test_conn.commit();

其他处理方法只有以上所有行都插入成功才会发生....

当我使用

executeBatch()
插入表时,如果插入时出现SQL异常或错误,是否可以找到哪条记录的插入引发了异常?

java jdbc batch-updates
2个回答
0
投票

您必须

try-catch
stmt.executeBatch()
调用并检查异常中的详细信息。批处理执行将在发生第一个错误时停止。


0
投票

如果抛出异常并且您想知道每个失败插入的异常到底是什么,您可以使用此 catch 块,它将打印失败的确切原因:

  catch (SQLException sqlException) {
        while (sqlException != null) {
            System.err.println("Error msg: " + sqlException.getMessage());
            sqlException = sqlException.getNextException();
        }
    } 

这将在控制台上打印如下内容:“...记录 #123 中的异常...”,它显示在哪个记录中发生了异常,并将打印 SQLCODE 和 SQLSTATE

© www.soinside.com 2019 - 2024. All rights reserved.