При использовании JDBC с БД Oracle, как определить, действительно ли истекло время ожидания соединения или неверные учетные данные? - PullRequest
1 голос
/ 15 сентября 2011

У меня уже есть строка подключения и имя пользователя DBA.Я принимаю пароль DBA от пользователя.Чтобы проверить правильность введенного им пароля, я пытаюсь создать соединение, используя

    String connString = "jdbc:oracle:thin:@" + connDesc;
    Properties props = new Properties();
    props.put("user", user);
    props.put("password", pwd);

    props.put("internal_logon", "sysdba");
    Class.forName("oracle.jdbc.OracleDriver").newInstance();
    Connection conn = DriverManager.getConnection(connString, props);

Теперь, когда оно выдает SQLException, мне нужно выяснить, является ли это исключение неправильным паролем или тайм-аутом сети.Есть ли способ сделать это?Кроме того, есть ли лучший способ подтвердить пароль, чем то, что я сейчас делаю?

1 Ответ

4 голосов
/ 15 сентября 2011

Вы можете использовать метод SQLException.getErrorCode () , чтобы прочитать специфичный для Oracle код ошибки.

Для недопустимой комбинации имени пользователя и пароля код ошибки - 1017.

Мне не совсем понятно, какую ошибку вы подразумеваете под «тайм-аутом сети». Если это сообщение The Network Adapter could not establish the connection, то код ошибки, который вам нужен, выглядит как 17002. (Я получил эту ошибку при попытке подключиться к моему локальному экземпляру Oracle XE с использованием JDBC, но с отключенным прослушивателем TNS.)

Нет лучшего способа проверки имени пользователя / пароля, чем попытка создать соединение с базой данных с использованием этого имени пользователя и пароля.

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