2011-09-15 1 views
1

私はすでに接続文字列とDBAユーザー名を持っています。私はユーザーからDBAパスワードを受け取ります。それは、SQLExceptionをスローした場合 彼によって提供されたパスワードが正しいかどうかを確認するには、私はOracle DBでJDBCを使用する場合、接続が実際にタイムアウトしたかどうか、または認証情報が間違っているかどうかを調べるにはどうすればよいですか?

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); 

を使用して接続を作成しようとは、今、私はその例外が原因で間違ったパスワードやネットワークのタイムアウトであれば見つける必要があります。それを行う方法はありますか? また、私が現在行っていることよりもパスワードを検証する良い方法はありますか?

答えて

4

SQLException.getErrorCode()メソッドを使用すると、エラーのOracle固有のエラー・コードを読み取ることができます。無効なユーザー名/パスワードの組み合わせについては

、エラーコードは、それはあなたの「ネットワークタイムアウト」によって意味正確に何のエラー私にははっきりしていない1017

です。メッセージがThe Network Adapter could not establish the connectionの場合は、17002のエラーコードが表示されます(このエラーは、JDBCを使用してローカルOracle XEインスタンスに接続しようとしていますが、TNSリスナがシャットダウンしています)。

そのユーザー名とパスワードを使用してデータベースへの接続を作成しようとするよりも、ユーザー名とパスワードを検証する優れた方法です。

+0

ありがとうございました。私は自分のコードでテストします。 – Jagat

関連する問題