2

アプリで ORA-28011 と ORA-28002 を処理する必要があります。しかし、これらの ORA 警告は JDBC によって抑制されています (私が思うに)
Java でこれらをキャッチするにはどうすればよいですか?
JDBCプロパティはありますか?

dba_usersテーブルからステータスを直接クエリするのは好きではありません。

ありがとう!

4

1 に答える 1

4

それらはJDBC によって抑制されません。Connection#getWarnings()( Connection-related warnings) を使用して、データベースによって報告された最初の警告を取得し、 を使用しSQLWarning#getErrorCode()て、スローされたベンダー固有の警告コードを取得できます。これにより、Oracle JDBC ドライバーの場合、次のORA番号が得られます。

Connection connection;
// ...
SQLWarning warn = connection.getWarnings();
int errorCode = warn.getErrorCode();
if (errorCode == 28011) {
  // ORA-28011
} else if (errorCode == 28002) {
  // ORA-28002
}

さらに警告を取得する場合は、 を使用しますSQLWarning#getNextWarning()

参考文献:

于 2012-09-26T12:25:20.393 に答える