Как получить причину SQLException от объекта SQLException - PullRequest
3 голосов
/ 12 марта 2012

Я использую JDBC и выполняю запрос. Есть ли способ узнать причину, по которой он вышел из строя из возвращенного объекта SQLException?

В частности, я хочу знать, нарушил ли мой запрос ограничение внешнего ключа (и какой) или ограничение ключа.

Будет ли этот результат зависеть от поставщика? На всякий случай я использую драйвер postgresql-8.4-701.jdbc4.jar. Если это зависит от поставщика, где я могу найти коды?

РЕДАКТИРОВАТЬ: я хочу сделать это динамически - то есть

if(violated foreign key constraint on attribute x) {
     return 5;
} else if (violated primary key constraint) {
     return 7;
} else {
     return 0;
}

Или что-то в этом роде.

РЕДАКТИРОВАТЬ: Согласно этого поста , для JDBC PostgreSQL нет кодов ошибок, специфичных для поставщика. Не знаю, если это все еще в силе.

Ответы [ 2 ]

4 голосов
/ 12 марта 2012

Вы можете обработать код ошибки из объекта SQLException.

sqlException.getErrorCode()

При этом извлекается специфичный для поставщика код исключения для этого объекта SQLException. Используя специальный код ошибки, вы можете перейти к необходимому блоку кода.

0 голосов
/ 12 марта 2012

попробуйте распечатать трассировку стека (например, тип SQLException)

e.printStackTrace()

или получение сообщения

e.getMessage()

Это может дать вам некоторое объяснение, почему запрос не прошел

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...