クラス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オブジェクトを構築します。
    BatchUpdateException(int[] updateCounts)
    指定されたupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。Throwable.initCause(java.lang.Throwable)メソッドを呼び出すことによって、初期化されます。
    BatchUpdateException(int[] updateCounts, Throwable cause)
    指定されたcauseupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。
    BatchUpdateException(String reason, int[] updateCounts)
    指定されたreasonupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。
    BatchUpdateException(String reason, int[] updateCounts, Throwable cause)
    指定されたreasoncause、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。
    BatchUpdateException(String reason, String SQLState, int[] updateCounts)
    指定されたreasonSQLState、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。
    BatchUpdateException(String reason, String SQLState, int[] updateCounts, Throwable cause)
    指定されたreasonSQLStatecause、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。
    BatchUpdateException(String reason, String SQLState, int vendorCode, int[] updateCounts)
    指定されたreasonSQLStatevendorCode、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。
    BatchUpdateException(String reason, String SQLState, int vendorCode, int[] updateCounts, Throwable cause)
    指定されたreasonSQLStatevendorCodecause、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。
    BatchUpdateException(String reason, String SQLState, int vendorCode, long[] updateCounts, Throwable cause)
    指定されたreasonSQLStatevendorCodecause、およびupdateCountsで初期化されたBatchUpdateExceptionオブジェクトを構築します。
    指定されたcauseで初期化されたBatchUpdateExceptionオブジェクトを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    long[]
    バッチ更新内の更新文のうち、この例外が発生するまでに正常に実行されたものすべてに対する更新カウントを取り出します。
    int[]
    バッチ更新内の更新文のうち、この例外が発生するまでに正常に実行されたものすべてに対する更新カウントを取り出します。

    クラスで宣言されたメソッド SQLException

    getErrorCode, getNextException, getSQLState, iterator, setNextException
    修飾子と型
    メソッド
    説明
    int
    このSQLExceptionオブジェクトのベンダー固有の例外コードを取得します。
    setNextException(SQLException ex)によってこのSQLExceptionオブジェクトにチェーンされた例外を取得します。
    このSQLExceptionオブジェクトのSQLStateを取得します。
    チェーンされたSQLExceptionについてのイテレータを返します。
    void
    チェーンの最後にSQLExceptionオブジェクトを追加します。

    Throwableクラスで宣言されたメソッド

    addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    修飾子と型
    メソッド
    説明
    final void
    この例外を提供する目的で抑制された例外に、指定された例外を追加します。
    実行スタック・トレースを埋め込みます。
    このスロー可能オブジェクトの原因を返しますが、原因が存在しないか不明な場合はnullを返します。
    このスロー可能オブジェクトの、ローカライズされた記述を作成します。
    このスロー可能オブジェクトの詳細メッセージ文字列を返します。
    Throwable.printStackTrace()によって出力されるスタック・トレース情報にプログラムでアクセスできるようにします。
    final Throwable[]
    この例外を提供する目的で(通常try-with-resources文によって)抑制された例外をすべて含む配列を返します。
    このスロー可能オブジェクトの原因を、指定された値に初期化します。
    void
    このスロー可能オブジェクトおよびそのバックトレースを標準エラー・ストリームに出力します。
    void
    このスロー可能オブジェクトとそのバックトレースを指定された印刷ストリームに出力します。
    void
    このスロー可能オブジェクトとそのバックトレースを指定されたプリント・ライターに出力します。
    void
    Throwable.getStackTrace()によって返され、Throwable.printStackTrace()と関連メソッドによって出力される、スタック・トレース要素を設定します。
    このスロー可能オブジェクトの短い記述を返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。

    インタフェースIterableで宣言されたメソッド

    forEach, spliterator
    修飾子と型
    メソッド
    説明
    default void
    forEach(Consumer<? super Throwable> action)
    Iterableの各要素に対して指定されたアクションを、すべての要素が処理されるか、アクションが例外をスローするまで実行します。
    このIterableによって記述される要素に対するSpliteratorを作成します。
  • コンストラクタの詳細

    • 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

      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

      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

      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

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

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

      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

      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

      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

      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

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

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

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