Проверка успешности весеннего пакетного обновления JDBC
Я использую Spring JDBCTemplate batchUpdate для вставки данных в пакет. Я хочу проверить, успешно ли вставлены данные. JDBCTemplate batchUpdate возвращает int[][], так какой же правильный способ проверки вставки данных?
Эта ссылка гласит: "Все методы пакетного обновления возвращают массив int, содержащий количество затронутых строк для каждой записи пакета. Этот счетчик сообщается драйвером JDBC, и он не всегда доступен, и в этом случае драйвер JDBC просто возвращает значение -2". Я не могу понять значение возврата -2 здесь. Значит ли это, что вставка не удалась?
1 ответ
-2 не обязательно означает ошибку, может быть, как уже упоминалось, случай подсчета затронутых строк недоступен.
РЕДАКТИРОВАТЬ
-2 - это значение Statement.SUCCESS_NO_INFO (тогда как EXECUTE_FAILED равно -3). Так что, если драйвер не соответствует спецификации JDBC, -2 однозначно означает успех
Конец редактирования
Об ошибках сообщается через BatchUpdateException
Обычно, если вы выполняете N запросов в своем пакетном скрипте, вы получите количество обновлений на запрос i в результате:
int result[] = jdbcTemplate.batchUpdate(sql);
так:
result[0]
будет хранить количество обновлений для первого запроса,
result[1]
будет хранить количество обновлений для второго запроса и т. д.