Hitachi

Hitachi Advanced Data Binder AP開発ガイド


12.3 SQL例外拡張機能

SQLExceptionのサブクラスとして複数の例外クラスが追加されています。JDBC 4.0 APIで返却される例外クラスの一覧と各クラスの説明を次の表に示します。

表12‒6 JDBC 4.0 APIで返却される例外クラスの一覧と各クラスの説明

項番

クラス名

説明

接続状態中にエラーが発生した場合の接続状態

1

SQLNonTransientException

一時的ではないエラーを示しています。失敗したSQL文を再実行しても,正常に実行できない場合に投入されます。

有効

2

SQLFeatureNotSupportedException

SQLSTATEのクラス値が0A(サポートされていない機能)の場合に投入されます。

有効

3

SQLNonTransientConnectionException

SQLSTATEのクラス値が08(コネクション違反)の場合に投入されます。

4

SQLDataException

SQLSTATEのクラス値が22(データ例外)の場合に投入されます。

有効

5

SQLIntegrityConstraintViolationException

SQLSTATEのクラス値が23(整合性制約違反)の場合に投入されます。

有効

6

SQLInvalidAuthorizationSpecException

SQLSTATEのクラス値が28(認可識別子の指定が正しくない)の場合に投入されます。

7

SQLSyntaxErrorException

SQLSTATEのクラス値が42(構文誤りまたはアクセス規則違反)の場合に投入されます。

有効

8

SQLTransientException

一時的なエラーを示しています。失敗したSQL文を再実行した場合,成功する可能性があるときに投入されます。

有効

9

SQLTransientConnectionException

SQLSTATEのクラス値が08(コネクション違反)の場合に投入されます。HADBサーバが開始または終了中であるときなどが該当します。

10

SQLTransactionRollbackException

SQLSTATEのクラス値が40(トランザクションがロールバックした)の場合に投入されます。

有効

11

SQLTimeoutException

タイムアウトが発生した場合に投入されます。

有効

12

SQLRecoverableException

接続を再確保したあとに,失敗したトランザクションを再実行した場合,成功する可能性があるときに投入されます。

無効

13

SQLClientInfoException

設定できないクライアントのプロパティが1つ以上ある場合に,Connection.setClientInfoメソッドによって投入されます。

(凡例)

−:該当しません。

SQLSTATEのクラス値については,マニュアルHADB メッセージSQLSTATEの出力形式を参照してください。

JDBC 4.0 APIで追加された例外クラスの継承関係を次に示します。

java.sql.SQLException
  [図データ]
  [図データ] java.sql.SQLNonTransientException
  [図データ]    [図データ] java.sql.SQLFeatureNotSupportedException
  [図データ]    [図データ] java.sql.SQLNonTransientConnectionException
  [図データ]    [図データ] java.sql.SQLDataException
  [図データ]    [図データ] java.sql.SQLIntegrityConstraintViolationException
  [図データ]    [図データ] java.sql.SQLInvalidAuthorizationSpecException
  [図データ]    [図データ] java.sql.SQLSyntaxErrorException
  [図データ]
  [図データ] java.sql.SQLTransientException
  [図データ]    [図データ] java.sql.SQLTransientConnectionException
  [図データ]    [図データ] java.sql.SQLTransactionRollbackException
  [図データ]    [図データ] java.sql.SQLTimeoutException
  [図データ]
  [図データ] java.sql.SQLRecoverableException
  [図データ] java.sql.SQLClientInfoException

各例外クラスは,java.sqlパッケージのクラスを直接利用します。例外クラスが提供する各メソッドの詳細,使用方法については,JDBC規格の関連ドキュメントを参照してください。

重要

executeQueryメソッドなどのSQL文を実行するメソッドで,setQueryTimeoutメソッドまたはadb_clt_rpc_sql_wait_timeに指定した時間を超えたためにタイムアウトが発生した場合,JDBC規格ではSQLTimeoutExceptionが投入されます。ただし,HADBクライアントからHADBサーバに処理要求をしてから,応答が戻ってくるまでの待ち時間でタイムアウトが発生した場合は,HADBサーバと必ず切断されるため,SQLRecoverableExceptionが投入されます。