2009-03-23 6 views
0

Недавно у меня была очень большая проблема, которая потребовала много времени для отладки. У меня есть инструкция обновления, которая обновляет 32 столбца в таблице. Я сделал это с PreparedStatement. Случайно я удалил один вызов setParameter(), поэтому обновление не может быть успешно завершено.Создание JDBC SQL в PreparedStatement

У меня есть исключение из JDBC (Apache Derby), в котором говорилось: «В листе один параметр не инициализирован» и не смог определить, какой параметр не установлен, поскольку драйвер ничего вам не сообщил о имени или порядковом номере в наименьший первый параметр, который не установлен ...

Я безуспешно выполнял googleing для некоторой утилиты, которая будет производить простой старый SQL из (почти готового) подготовленного оператора. Это очень помогло бы в таких ситуациях, как эта, поскольку я смогу увидеть, что не установлено.

У кого-нибудь возникла эта проблема? Есть какое-то решение?

ответ

0

Поскольку параметры в подготовленном операторе являются только списком или картой в объекте PreparedStatement, вы должны иметь возможность проверять значения.

Также вы можете написать очень простой Wrapper вокруг вас драйвер jdbc, который создает завернутые PreparedStatements и регистрирует все параметры и там настройки перед фактическим выполнением инструкции.

2

Посмотрите на P6Spy. Он может перехватывать все ваши вызовы JDBC и записывать их перед отправкой в ​​вашу базу данных.

В качестве альтернативы, подумайте о использовании Springs JDBCTemplate, который может выдержать много вашего кодирования JDBC и поможет избежать подобных ошибок. Для использования этого бита вам не нужна остальная часть фреймворка Spring.

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