pureQuery は JDBC に基づいていますが、pureQuery Data インターフェースではアプリケーションがチェック例外を処理する必要はありません。
pureQuery メソッドの呼び出しを try ブロックで囲む必要はありません。
可能な場合は、pureQuery は、基礎となる JDBC ドライバーから SQLExceptions およびその他のチェック例外をキャッチします。その後 pureQuery はキャッチされた例外をラップするランタイム例外をスローします。
pureQuery ランタイム例外は以下のとおりです。
- DataRuntimeException
- この例外は、java.lang.RuntimeException を拡張するため、メソッド getMessage() および getCause() を継承します。
- ラップされた SQLException に関する情報を見つけるには、以下のメソッドを使用できます。
- public Integer getErrorCode()
- DataRuntimeException が SQLException をラップする場合、このメソッドは SQLCODE を戻します。
- DataRuntimeException が SQLException をラップしない場合、このメソッドは値 -99999 を戻します。
- public String getSQLSTATE()
- DataRuntimeException が SQLException をラップする場合、このメソッドは SQLSTATE を戻します。
- DataRuntimeException が SQLException をラップしない場合、このメソッドは値「FFFFF」を戻します。
- public SqlErrorType getErrorType()
- DataRuntimeException が SQLException をラップするかどうかにかかわらず、このメソッドは以下のいずれかの値を返します。
- AUTHORIZATION_ERROR
- CARDINALITY_VIOLATION
- CONNECTION_ERROR
- CONSTRAINT_VIOLATION
- DUPLICATE_ROW_VIOLATION
- FEATURE_NOT_SUPPORTED
- FUNCTION_ERROR
- INVALID_CURSOR_STATE
- JDBC_DRIVER_ERROR
- LIMIT_EXCEEDED
- RESOURCE_UNAVAILABLE
- STATIC_PACKAGE_NOT_FOUND
- SYNTAX_ERROR
- TIMEOUT_OR_DEADLOCK_NO_ROLLBACK
- TIMEOUT_OR_DEADLOCK_WITH_ROLLBACK
- UNCATEGORIZED_ERROR
アプリケーションが SQLException からリカバリーできるかどうかを判別するには、ブールの isTransient() メソッドを使用します。このメソッドは、SQLException が SQLTransientException のインスタンスの場合は true を戻します。SQLTransientException は、JDBC 4.0 で導入されている SQLException の 3 つのサブクラスのうちの 1 つです。
- UpdateManyException
- この例外は DataRuntimeException を拡張し、以下のメソッドを提供します。
- getUpdateCounts() は、バッチ更新の結果が含まれる int 2 次元配列を戻します。
- HeteroBatchSQLException[][] getHeteroBatchSQLExceptionArray() は、行固有の HeteroBatchSQLException などの、バッチ更新から戻されるエラー情報が含まれる 2 次元配列を戻します。
- getBatchNonSpecificExceptions() は、行固有でない SQLException のバッチ更新から HeteroBatchSQLException を戻します。
複数の SQLException がある場合は、HeteroBatchSQLException は一緒にチェーニングされます。
注: 複数の例外がある場合は、それらの例外は一緒にチェーニングされます。
一緒にチェーニングされた HeteroBatchSQLException を取得するには、getNextException() メソッドを呼び出します。