java - 如何在 JDBC 批处理过程中获取失败的记录

标签 java mysql sql oracle jdbc

我正在通过 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 批处理过程中失败的记录。

最佳答案

你可以捕获BatchUpdateException其中的方法 int[] getUpdateCounts() 返回一个数组,其中包含受每个批处理语句影响的行数,按照它们添加到批处理的顺序强>.

但这里重要的是,如果您的单个批处理语句更新多于一行,您无法准确判断哪些行受到该语句的影响,以及它们是否存在于表中(在插入或合并语句的情况下) .

关于java - 如何在 JDBC 批处理过程中获取失败的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55392183/

相关文章:

mysql - 如何提高查询的性能?

MySQL 在 : mysql "ERROR 1524 (HY000): Plugin ' auth_socket' is not loaded"上失败

sql - 使用 Excel 从 VARBINARY(MAX) 字段批量插入

sql - 相同表之间的 2 种不同类型的关系

sql - RoundFunctionSQL 最多到最接近的 10

java - equals() 给我空指针异常

java - 如何在 Java 中计算枚举的哈希码,以及如何将枚举哈希码组合为 HashMap 的键

c# - MySql.Data.dll 中的 IO.FileNotFoundException : Can't load System. 安全性.权限

java - 为什么bson java实现使用4字节inc字段?

java - 无法接受 selenium java 中的警报 - Firefox 浏览器