Java 如何在JDBC批处理期间获取失败的记录

Java 如何在JDBC批处理期间获取失败的记录,java,mysql,sql,oracle,jdbc,Java,Mysql,Sql,Oracle,Jdbc,我正在通过JDBC批处理执行SQL语句集。 如何获取批处理过程中失败的记录 我能够记录成功和失败的次数。但无法获取失败的记录 Statement statement = null; try { statement = connection.createStatement(); for (String insertQuery : insertQuerys) { statement.addBatch(insertQuery); } statem

我正在通过JDBC批处理执行SQL语句集。 如何获取批处理过程中失败的记录

我能够记录成功和失败的次数。但无法获取失败的记录

Statement statement = null;
try {
    statement = connection.createStatement();
    for (String insertQuery : insertQuerys) {
            statement.addBatch(insertQuery);
    }
    statement.executeBatch();
} catch (Exception e) {
    logger.info("Error : " + e);
} finally {
    try {
        statement.close();
    } catch (SQLException e1) {
        logger.info("Error : " + e1);
    }
}
我期望在JDBC批处理过程中失败的记录。

您可以捕获具有方法int[]getUpdateCounts的记录,该方法按照每个批处理语句添加到批处理中的顺序返回受其影响的行数数组


但这里有一点很重要,如果您的单个批处理语句更新了多行,您就无法准确地判断哪些行受该语句的影响,以及在insert或merge语句的情况下,这些行是否存在于表中。

失败的记录是什么意思?当sql语句/查询失败时,它只返回一个错误,不返回任何记录。您只能选择sql语句/查询本身失败。请注意,驱动程序可以在第一次失败时停止,也可以继续执行。根据此故障处理,update counts要么包含失败语句之前成功执行语句的更新计数,要么包含批处理语句中所有语句的更新计数。对于失败的语句,update counts包含EXECUTE_failed。根据事务模式和驱动程序行为自动提交、事务中止等,任何失败都可能恢复所有内容,包括成功执行的语句。