【问题标题】:Statement executeBatch method returns array of value 2语句 executeBatch 方法返回值为 2 的数组
【发布时间】:2016-11-29 04:16:23
【问题描述】:

当我在 java 中执行 statement.executeBatch() 方法时,它返回一个值为 2 的 int 数组

jdbc-spec 对批量更新的返回码有以下说法:

■ 0 或更大

■ Statement.SUCCESS_NO_INFO

■ -2

但我每次都得到 2。 记录已从数据库中成功删除,它从满足查询的两个表中删除了 25 条记录。但在 sysout 中,它显示受影响的 Records 值为 2

    Connection conn = null;
    Statement stmt = null;
    try {
        Class.forName(JDBC_DRIVER);
        conn = DriverManager.getConnection(CONNECTION_URL, USERNAME, PASSWORD);
        stmt = conn.createStatement();
        System.out.println("trying to execute query");

        stmt.addBatch("DELETE FROM TABLE1 WHERE CRTE_TSTP < TRUNC(SYSDATE) - 14");
        stmt.addBatch("DELETE FROM TABLE2 WHERE RECV_TSTP < TRUNC(SYSDATE) - 14");

        int affectedRecords[] = stmt.executeBatch();            
        conn.commit();

        System.out.println("number of rows deleted  " + affectedRecords.length);

    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }

}

【问题讨论】:

    标签: java sql jdbc


    【解决方案1】:

    您得到的是数组的长度,而不是实际的 int 值。您是否尝试过从返回的数组元素中计算删除的总和。例如:

    int affectedRecordsSum = affectedRecords[0] + affectedRecords[1];
    System.out.println("number of rows deleted  " + affectedRecordsSum);
    

    【讨论】:

      【解决方案2】:

      也许你用错了:

      int[] executeBatch() 抛出 SQLException

      向数据库提交一批命令以供执行,如果所有命令都成功执行,则返回一个更新计数数组。返回的数组的 int 元素按照批处理中的命令进行排序,这些命令根据添加到批处理中的顺序进行排序。 executeBatch 方法返回的数组中的元素可能是以下之一:

      1)一个大于或等于零的数字——表示命令已成功处理,并且是一个更新计数,给出了数据库中受命令执行影响的行数

      2) 值 SUCCESS_NO_INFO -- 表示命令已成功处理,但受影响的行数未知 如果批量更新中的某个命令未能正确执行,则此方法会抛出 BatchUpdateException,并且 JDBC 驱动程序可能会或可能不会继续处理批处理中的剩余命令。但是,驱动程序的行为必须与特定的 DBMS 一致,要么总是继续处理命令,要么从不继续处理命令。如果驱动程序在失败后继续处理,则 BatchUpdateException.getUpdateCounts 方法返回的数组将包含与批处理中的命令一样多的元素,并且至少有一个元素如下:

      3) EXECUTE_FAILED 的值 -- 表示命令执行失败,只有在命令失败后驱动程序继续处理命令时才会发生

      【讨论】:

        猜你喜欢
        • 2013-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-01
        • 2020-07-12
        • 1970-01-01
        • 1970-01-01
        • 2014-07-07
        相关资源
        最近更新 更多