Как правильно ловить и обрабатывать ORA-00001 SQLException с JDBC? - PullRequest
7 голосов
/ 19 апреля 2011

Я создаю простую форму, которая сохраняет введенные данные в чрезвычайно простой таблице базы данных Oracle через сервлет Java с использованием JDBC.Эта таблица использует адрес электронной почты в качестве первичного ключа.Если пользователь отправляет форму несколько раз с одним и тем же адресом электронной почты, функция execute завершается ошибкой и выдает исключение SQLException.Строка исключения:

java.sql.SQLException: ORA-00001: unique constraint (...removed...) violated

В этом сценарии я хотел бы перехватить это исключение и разобраться с ним, сказав пользователю, что форму нельзя отправить несколько раз с одним и тем же адресом электронной почты.Как правильно обрабатывать ORA-00001 отдельно и отличаться от любых других исключений SQLE, которые могут быть выброшены execute?Сравнение строк здесь может сработать, но это кажется плохим решением.

1 Ответ

14 голосов
/ 19 апреля 2011

Если вам не нужно быть независимой от СУБД, используйте SQLException.getErrorCode()

Возвращает числовой код ошибки поставщика.Для ORA-0001 это будет 1

...