2015-04-02 3 views
1

Когда я выполнения метода statement.executeBatch() в Java, его возвращение в целочисленный массив со значением в 2Заявление executeBatch метод возвращает массив значений 2

-спецификации JDBC имеет следующие сказать о возвращающейся код Пакетная обновления:

■ 0 или больше

■ Statement.SUCCESS_NO_INFO

■ -2

Но я был получая каждый раз как 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(); 
    } 

}

ответ

3

Вы получаете длину массива, а не фактических значений Int. Вы пытались вычислить сумму удалений из возвращаемых элементов массива. Например:

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

allu: Thanks.It работает –

0

может быть, вы используете его неправильно:

ИНТ [] executeBatch() бросает SQLException

Отправляет пакет команд в базу данных для выполнения, и, если все команды выполняют успешно, возвращает массив подсчетов обновлений. Элементы int возвращаемого массива упорядочены так, чтобы они соответствовали командам в партии, которые упорядочены в соответствии с порядком, в котором они были добавлены в пакет. Элементы в массиве, возвращаемые методом executeBatch, могут быть следующими:

1) Число, большее или равное нулю, - указывает, что команда была успешно обработана и является числом обновлений, указывающим количество строк в базе данных, на которые повлияло выполнение команды

2) Значение SUCCESS_NO_INFO - указывает, что команда была успешно обработана, но количество поврежденных строк неизвестно. Если одна из команд в пакетном обновлении не удалась выполняется правильно, этот метод генерирует исключение BatchUpdateException, а драйвер JDBC может или не может обрабатывать оставшиеся команды в пакете. Однако поведение драйвера должно соответствовать конкретной СУБД, либо всегда продолжая обрабатывать команды, либо никогда не продолжать обрабатывать команды. Если драйвер продолжает обработку после сбоя, массив, возвращаемый методом BatchUpdateException.getUpdateCounts, будет содержать столько элементов, сколько команд в пакете, и по крайней мере один из элементов будет следующим:

3) A значение EXECUTE_FAILED - указывает на то, что команда не смогла успешно выполнить и возникла, только если драйвер продолжает обрабатывать команды после сбоя команды.

Смежные вопросы