Suppress all Exceptions from JDBC
このライブラリを使用すれば、たとえデータベースが落ちたとしても例外に煩わされることはありません。
現在は個別にビルドを行う必要があります。mavenでビルドを行ってください。
mvn package
JDBC 4.2に対応していますので、jarをクラスパスに導入するだけで使用できます。 データソースを使用している場合はJDBC URLに sej を足してください。
jdbc:oracle:thin:scott/tiger@localhost:1521:XE
↓
jdbc:sej:oracle:thin:scott/tiger@localhost:1521:XE
もしくは既存のコネクションを直接ラップすることもできます。 Connectionインターフェースではなく、実装を直接扱うことでSQLExceptionクラスを見ることすらありません。
Connection conn = getConnection();
SEConnection sec = new SEConnection(conn);
SEPreparedStatement sepstmt = sec.prepareStatement("select * from employee");
SEResultSet sers = sepstmt.executeQuery();
while(sers.next()) {
・・・・
}
Connectionインターフェースをそのまま使用する場合はSQLExceptionが投げられなくてもSQLExceptionをハンドリングする必要があります。
このライブラリはいくつかの点でJDBC標準には準拠していません。ご注意ください。(例えば、ResultSet#next()を呼び出さずにResultSet#getString(int)を呼び出してもSQLExceptionはスローされない。)
SEDeriver#jdbcCompliant()は委譲先のドライバがJDBC仕様に準拠しているかどうかにかかわらずtrue
を返します。SEDeriver#connect()が呼び出されるまで委譲先のドライバが不明なのと、このメソッド自体がSEDeriver#connect()より先にフレームワークから呼び出されることが多いのと、フレームワークによってはSEDeriver#jdbcCompliant()がfalse
を返す場合に有効なJDBCドライバとして認識してくれないためです。