我正在使用以下代码将数据插入表中。
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异常或错误,是否可以找到哪条记录的插入引发了异常?
您必须
try-catch
stmt.executeBatch()
调用并检查异常中的详细信息。批处理执行将在发生第一个错误时停止。
如果抛出异常并且您想知道每个失败插入的异常到底是什么,您可以使用此 catch 块,它将打印失败的确切原因:
catch (SQLException sqlException) {
while (sqlException != null) {
System.err.println("Error msg: " + sqlException.getMessage());
sqlException = sqlException.getNextException();
}
}
这将在控制台上打印如下内容:“...记录 #123 中的异常...”,它显示在哪个记录中发生了异常,并将打印 SQLCODE 和 SQLSTATE