Проверка успешности весеннего пакетного обновления 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]

будет хранить количество обновлений для второго запроса и т. д.

Другие вопросы по тегам