Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 语句executeBatch方法返回值为2的数组_Java_Sql_Jdbc - Fatal编程技术网

Java 语句executeBatch方法返回值为2的数组

Java 语句executeBatch方法返回值为2的数组,java,sql,jdbc,Java,Sql,Jdbc,当我在java中执行statement.executeBatch()方法时,它返回一个值为2的int数组 jdbc规范对批量更新的返回代码有如下说明: ■ 0或更大 ■ Statement.SUCCESS\u NO\u信息 ■ -二, 但我每次都是2岁。 已成功从数据库中删除记录,并从满足查询的两个表中删除25条记录。但在sysout中,受影响的记录值显示为2 Connection conn = null; Statement stmt = null; try {

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

jdbc规范对批量更新的返回代码有如下说明:

■ 0或更大

■ Statement.SUCCESS\u NO\u信息

■ -二,

但我每次都是2岁。 已成功从数据库中删除记录,并从满足查询的两个表中删除25条记录。但在sysout中,受影响的记录值显示为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();
    }
连接连接=null;
语句stmt=null;
试一试{
类forName(JDBC_驱动程序);
conn=DriverManager.getConnection(连接URL、用户名、密码);
stmt=conn.createStatement();
System.out.println(“尝试执行查询”);
stmt.addBatch(“从表1中删除,其中CRTE_TSTP

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

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

也许你用错了:

int[]executeBatch()引发SQLException

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

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

2) 值SUCCESS\u NO\u INFO——表示命令已成功处理,但受影响的行数未知 如果批处理更新中的某个命令无法正确执行,此方法将抛出BatchUpdateException,JDBC驱动程序可能会也可能不会继续处理批处理中的其余命令。但是,驱动程序的行为必须与特定DBMS一致,要么始终继续处理命令,要么永远不继续处理命令。如果驱动程序在出现故障后继续处理,则BatchUpdateException.getUpdateCounts方法返回的数组将包含与批处理中的命令数量相同的元素,并且至少有一个元素是以下元素:

3) 值EXECUTE_FAILED——表示命令未能成功执行,仅当驱动程序在命令失败后继续处理命令时才会发生