Выяснение «Какое ограничение» было нарушено из SQLException - PullRequest
3 голосов
/ 02 августа 2011

Мой код может встретить «Исключение нарушения ограничений» (CVE) для ряда различных ограничений. Чтобы отобразить осмысленное сообщение для пользователя и предпринять конкретные действия, я анализирую String, возвращаемое getMessage(). Это работает, но уродливо и, конечно, не легко поддерживать.

Мне интересно, есть ли лучший способ? Это должно быть довольно распространенный сценарий; Есть ли образец или лучшая практика, которой я мог бы следовать?

Спасибо.

1 Ответ

2 голосов
/ 02 августа 2011

AFAIK, так как вам интересно, в каком конкретном ограничении не получилось, все, что вы делаете, - единственный путь.

Я не уверен, о какой базе данных вы говорите, но вы можете попробовать .. SQLException.getErrorCode() и SQLException.getSQLState(). Это даст вам больше информации в зависимости от поставщика БД.

Например, в Oracle SQLException.getErrorCode() просто скажет вам, что ограничение нарушено, а не обязательно какое ограничение.

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