モジュール java.sql
パッケージ java.sql

クラスBatchUpdateException

すべての実装されたインタフェース:
Serializable, Iterable<Throwable>

public class BatchUpdateException
extends SQLException
バッチ更新操作中にエラーが発生したときにスローされるSQLExceptionのサブクラスです。 BatchUpdateExceptionは、SQLExceptionによって提供される情報に加えて、バッチ更新中に正常に実行されたすべてのコマンド、つまり、エラーが発生する前に実行されたすべてのコマンドの更新カウントを提供します。 更新カウントの配列での要素の順序は、コマンドがバッチに追加されたときの順序になります。

バッチ更新のコマンドが正しく実行されずBatchUpdateExceptionがスローされたあと、ドライバはバッチに残っているコマンドの処理を続けることも、中止することもできます。 失敗後にドライバが処理を継続する場合、BatchUpdateException.getUpdateCountsメソッドによって返される配列は、エラーまでに正常に実行されたコマンドの要素だけではなく、バッチの全コマンドの要素を含んでいます。 ドライバがコマンドの処理を継続する場合、失敗したコマンドの配列要素はどれもStatement.EXECUTE_FAILEDになります。

JDBCドライバ実装では、更新カウントがオーバーフローする可能性を避けるため、int[]を取るコンストラクタのかわりにコンストラクタBatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)を使用するようにしてください。

Statement.executeLargeBatchメソッドが呼び出された場合は、整数の更新カウントがオーバーフローする可能性を避けるため、getUpdateCountsのかわりにgetLargeUpdateCountsを呼び出すことをお薦めします。

導入されたバージョン:
1.2
関連項目:
直列化された形式
  • コンストラクタの詳細

    • BatchUpdateException

      public BatchUpdateException​(String reason, String SQLState, int vendorCode, int[] updateCounts)
      指定されたreasonSQLStatevendorCode、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。 causeは初期化されませんが、続いてThrowable.initCause(java.lang.Throwable)メソッドを呼び出すことで初期化できます。

      ノート: updateCountsのオーバーフローに関する検証は行われません。このため、コンストラクタBatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)を使用することをお薦めします。

      パラメータ:
      reason - エラーの説明
      SQLState - 例外を識別するXOPENコードまたはSQL:2003コード
      vendorCode - 特定のデータベース・ベンダーの例外コード
      updateCounts - intの配列。各要素は、コマンドの失敗後に処理を続けるJDBCドライバのバッチ内にある各SQLコマンドの更新カウント、Statement.SUCCESS_NO_INFOまたはStatement.EXECUTE_FAILED、あるいはコマンドの失敗後に処理を停止するJDBCドライバのバッチ内にある各SQLコマンドの、失敗前の更新カウントまたはStatement.SUCCESS_NO_INFOを表す
      導入されたバージョン:
      1.2
      関連項目:
      BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
    • BatchUpdateException

      public BatchUpdateException​(String reason, String SQLState, int[] updateCounts)
      指定されたreasonSQLState、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。 causeは初期化されませんが、続いてThrowable.initCause(java.lang.Throwable)メソッドを呼び出すことで初期化できます。 ベンダー・コードは0に初期化されます。

      ノート: updateCountsのオーバーフローに関する検証は行われません。このため、コンストラクタBatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)を使用することをお薦めします。

      パラメータ:
      reason - 例外の説明
      SQLState - 例外を識別するXOPENコードまたはSQL:2003コード
      updateCounts - intの配列。各要素は、コマンドの失敗後に処理を続けるJDBCドライバのバッチ内にある各SQLコマンドの更新カウント、Statement.SUCCESS_NO_INFOまたはStatement.EXECUTE_FAILED、あるいはコマンドの失敗後に処理を停止するJDBCドライバのバッチ内にある各SQLコマンドの、失敗前の更新カウントまたはStatement.SUCCESS_NO_INFOを表す
      導入されたバージョン:
      1.2
      関連項目:
      BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
    • BatchUpdateException

      public BatchUpdateException​(String reason, int[] updateCounts)
      指定されたreasonupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。 causeは初期化されませんが、続いてThrowable.initCause(java.lang.Throwable)メソッドを呼び出すことで初期化できます。 SQLStatenullに初期化され、ベンダー・コードは0に初期化されます。

      ノート: updateCountsのオーバーフローに関する検証は行われません。このため、コンストラクタBatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)を使用することをお薦めします。

      パラメータ:
      reason - 例外の説明
      updateCounts - intの配列。各要素は、コマンドの失敗後に処理を続けるJDBCドライバのバッチ内にある各SQLコマンドの更新カウント、Statement.SUCCESS_NO_INFOまたはStatement.EXECUTE_FAILED、あるいはコマンドの失敗後に処理を停止するJDBCドライバのバッチ内にある各SQLコマンドの、失敗前の更新カウントまたはStatement.SUCCESS_NO_INFOを表す
      導入されたバージョン:
      1.2
      関連項目:
      BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
    • BatchUpdateException

      public BatchUpdateException​(int[] updateCounts)
      指定されたupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。Throwable.initCause(java.lang.Throwable)メソッドを呼び出すことによって、初期化されます。 reasonおよびSQLStateはnullに初期化され、ベンダー・コードは0に初期化されます。

      ノート: updateCountsのオーバーフローに関する検証は行われません。このため、コンストラクタBatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)を使用することをお薦めします。

      パラメータ:
      updateCounts - intの配列。各要素は、コマンドの失敗後に処理を続けるJDBCドライバのバッチ内にある各SQLコマンドの更新カウント、Statement.SUCCESS_NO_INFOまたはStatement.EXECUTE_FAILED、あるいはコマンドの失敗後に処理を停止するJDBCドライバのバッチ内にある各SQLコマンドの、失敗前の更新カウントまたはStatement.SUCCESS_NO_INFOを表す
      導入されたバージョン:
      1.2
      関連項目:
      BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
    • BatchUpdateException

      public BatchUpdateException()
      BatchUpdateExceptionオブジェクトを構築します。 reasonSQLState、およびupdateCountsnullに初期化され、ベンダー・コードは0に初期化されます。 causeは初期化されませんが、続いてThrowable.initCause(java.lang.Throwable)メソッドを呼び出すことで初期化できます。
      導入されたバージョン:
      1.2
      関連項目:
      BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
    • BatchUpdateException

      public BatchUpdateException​(Throwable cause)
      指定されたcauseで初期化されたBatchUpdateExceptionオブジェクトを構築します。 SQLStateおよびupdateCountsnullに初期化され、ベンダー・コードは0に初期化されます。 reasoncause==nullの場合にnullに初期化され、cause!=nullの場合にcause.toString()に初期化されます。
      パラメータ:
      cause - このSQLExceptionの基となる原因(あとでgetCause()メソッドで取得するために保存されます); null値が許可されており、原因が存在しないか不明であることを示します。
      導入されたバージョン:
      1.6
      関連項目:
      BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
    • BatchUpdateException

      public BatchUpdateException​(int[] updateCounts, Throwable cause)
      指定されたcauseupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。 SQLStatenullに初期化され、ベンダー・コードは0に初期化されます。 reasoncause==nullの場合にnullに初期化され、cause!=nullの場合にcause.toString()に初期化されます。

      ノート: updateCountsのオーバーフローに関する検証は行われません。このため、コンストラクタBatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)を使用することをお薦めします。

      パラメータ:
      updateCounts - intの配列。各要素は、コマンドの失敗後に処理を続けるJDBCドライバのバッチ内にある各SQLコマンドの更新カウント、Statement.SUCCESS_NO_INFOまたはStatement.EXECUTE_FAILED、あるいはコマンドの失敗後に処理を停止するJDBCドライバのバッチ内にある各SQLコマンドの、失敗前の更新カウントまたはStatement.SUCCESS_NO_INFOを表す
      cause - このSQLExceptionの基となる原因(あとでgetCause()メソッドで取得するために保存されます); null値が許可されており、原因が存在しないか不明であることを示します。
      導入されたバージョン:
      1.6
      関連項目:
      BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
    • BatchUpdateException

      public BatchUpdateException​(String reason, int[] updateCounts, Throwable cause)
      指定されたreasoncause、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。 SQLStatenullに初期化され、ベンダー・コードは0に初期化されます。

      ノート: updateCountsのオーバーフローに関する検証は行われません。このため、コンストラクタBatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)を使用することをお薦めします。

      パラメータ:
      reason - 例外の説明
      updateCounts - intの配列。各要素は、コマンドの失敗後に処理を続けるJDBCドライバのバッチ内にある各SQLコマンドの更新カウント、Statement.SUCCESS_NO_INFOまたはStatement.EXECUTE_FAILED、あるいはコマンドの失敗後に処理を停止するJDBCドライバのバッチ内にある各SQLコマンドの、失敗前の更新カウントまたはStatement.SUCCESS_NO_INFOを表す
      cause - このSQLExceptionの基となる原因(あとでgetCause()メソッドで取得するために保存されます); null値が許可されており、原因が存在しないか不明であることを示します。
      導入されたバージョン:
      1.6
      関連項目:
      BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
    • BatchUpdateException

      public BatchUpdateException​(String reason, String SQLState, int[] updateCounts, Throwable cause)
      指定されたreasonSQLStatecause、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。 ベンダー・コードは0に初期化されます。
      パラメータ:
      reason - 例外の説明
      SQLState - 例外を識別するXOPENコードまたはSQL:2003コード
      updateCounts - intの配列。各要素は、コマンドの失敗後に処理を続けるJDBCドライバのバッチ内にある各SQLコマンドの更新カウント、Statement.SUCCESS_NO_INFOまたはStatement.EXECUTE_FAILED、あるいはコマンドの失敗後に処理を停止するJDBCドライバのバッチ内にある各SQLコマンドの、失敗前の更新カウントまたはStatement.SUCCESS_NO_INFOを表す

      ノート: updateCountsのオーバーフローに関する検証は行われません。このため、コンストラクタBatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)を使用することをお薦めします。

      cause - このSQLExceptionの基となる原因(あとでgetCause()メソッドで取得するために保存されます); null値が許可されており、原因が存在しないか不明であることを示します。
      導入されたバージョン:
      1.6
      関連項目:
      BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
    • BatchUpdateException

      public BatchUpdateException​(String reason, String SQLState, int vendorCode, int[] updateCounts, Throwable cause)
      指定されたreasonSQLStatevendorCodecause、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。
      パラメータ:
      reason - エラーの説明
      SQLState - 例外を識別するXOPENコードまたはSQL:2003コード
      vendorCode - 特定のデータベース・ベンダーの例外コード
      updateCounts - intの配列。各要素は、コマンドの失敗後に処理を続けるJDBCドライバのバッチ内にある各SQLコマンドの更新カウント、Statement.SUCCESS_NO_INFOまたはStatement.EXECUTE_FAILED、あるいはコマンドの失敗後に処理を停止するJDBCドライバのバッチ内にある各SQLコマンドの、失敗前の更新カウントまたはStatement.SUCCESS_NO_INFOを表す

      ノート: updateCountsのオーバーフローに関する検証は行われません。このため、コンストラクタBatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)を使用することをお薦めします。

      cause - このSQLExceptionの基となる原因(あとでgetCause()メソッドで取得するために保存されます); null値が許可されており、原因が存在しないか不明であることを示します。
      導入されたバージョン:
      1.6
      関連項目:
      BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
    • BatchUpdateException

      public BatchUpdateException​(String reason, String SQLState, int vendorCode, long[] updateCounts, Throwable cause)
      指定されたreasonSQLStatevendorCodecause、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。

      返される更新カウントがInteger.MAX_VALUEを超える可能性がある場合は、このコンストラクタを使用するようにしてください。

      パラメータ:
      reason - エラーの説明
      SQLState - 例外を識別するXOPENコードまたはSQL:2003コード
      vendorCode - 特定のデータベース・ベンダーの例外コード
      updateCounts - longの配列。各要素は、コマンドの失敗後に処理を続けるJDBCドライバのバッチ内にある各SQLコマンドの更新カウント、Statement.SUCCESS_NO_INFOまたはStatement.EXECUTE_FAILED、あるいはコマンドの失敗後に処理を停止するJDBCドライバのバッチ内にある各SQLコマンドの、失敗前の更新カウントまたはStatement.SUCCESS_NO_INFOを表す
      cause - このSQLExceptionの基となる原因(あとでgetCause()メソッドで取得するために保存されます); null値が許可されており、原因が存在しないか不明であることを示します。
      導入されたバージョン:
      1.8
  • メソッドの詳細

    • getUpdateCounts

      public int[] getUpdateCounts()
      バッチ更新内の更新文のうち、この例外が発生するまでに正常に実行されたものすべてに対する更新カウントを取り出します。 コマンドの1つが正しく実行されなかった場合、バッチ更新を実装するドライバは、バッチに残っているコマンドの処理を続けることも中止することもできます。 ドライバがコマンドの処理を継続する場合、このメソッドによって返される配列は、バッチにあるコマンドと同じ数の要素を持っています。そうでない場合、配列は、BatchUpdateExceptionがスローされるまでに正常に実行されたすべてのコマンドに対する更新カウントを含んでいます。

      このメソッドが返す可能性のある値は、Java 2 SDK, Standard Edition, Version 1.3で変更されました。 これは、BatchUpdateExceptionオブジェクトがスローされたあともバッチ更新内のコマンドの処理を継続する、という新しいオプションに適応するために行われました。

      戻り値:
      このエラーが発生するまでに正常に実行された更新の更新カウントを含むint型の配列。 ただし、エラー後もドライバがコマンドの処理を続ける場合は、バッチ内の各コマンドに対して次のいずれかの値が格納される。
      1. 更新カウント
      2. コマンドが正常に実行されたが影響を受けた行数は不明であることを示すStatement.SUCCESS_NO_INFO
      3. コマンドが正常に実行されなかったことを示すStatement.EXECUTE_FAILED
      導入されたバージョン:
      1.3
      関連項目:
      getLargeUpdateCounts()
    • getLargeUpdateCounts

      public long[] getLargeUpdateCounts()
      バッチ更新内の更新文のうち、この例外が発生するまでに正常に実行されたものすべてに対する更新カウントを取り出します。 コマンドの1つが正しく実行されなかった場合、バッチ更新を実装するドライバは、バッチに残っているコマンドの処理を続けることも中止することもできます。 ドライバがコマンドの処理を継続する場合、このメソッドによって返される配列は、バッチにあるコマンドと同じ数の要素を持っています。そうでない場合、配列は、BatchUpdateExceptionがスローされるまでに正常に実行されたすべてのコマンドに対する更新カウントを含んでいます。

      Statement.executeLargeBatchが呼び出され、返される更新カウントがInteger.MAX_VALUEを超える可能性がある場合は、このメソッドを使用するようにしてください。

      戻り値:
      このエラーが発生するまでに正常に実行された更新の更新カウントを含むlong型の配列。 ただし、エラー後もドライバがコマンドの処理を続ける場合は、バッチ内の各コマンドに対して次のいずれかの値が格納される。
      1. 更新カウント
      2. コマンドが正常に実行されたが影響を受けた行数は不明であることを示すStatement.SUCCESS_NO_INFO
      3. コマンドが正常に実行されなかったことを示すStatement.EXECUTE_FAILED
      導入されたバージョン:
      1.8