SQLステートメントのバッチを実行していると述べているので、 executeBatch
を使用していると想定しています。 。 executeBatch
を実行するとき ステートメントのバッチでは、一部のステートメントが成功し、一部のステートメントが失敗する場合があります。 1つのステートメントが失敗した場合でも、JDBCドライバーが成功したステートメントをロールバックすることを意味するわけではありません。 JDBCドライバーは、1つのステートメントが失敗した場合にバッチ内のすべてのステートメントの実行を試みるか、ステートメントが失敗するとバッチ内のステートメントの実行を停止することを選択できます(使用しているドライバーがステートメントの実行を停止することを選択したようです。障害が発生するとすぐに)
バッチ内の1つのステートメントが失敗すると、 BatchUpdateException
を取得する必要があります 。例外ハンドラーで、 getUpdateCounts
を呼び出す必要があります 。これにより、 int
の配列が得られます これは、ステートメントが更新された行数、 Statement.SUCCESS_NO_INFO
のいずれかを示します。 ステートメントは成功したが行数が利用できなかったこと、または Statement.EXECUTE_FAILED
を示します ステートメントが失敗したことを示します。最初の99個のステートメントが成功し、100番目のステートメントがエラーを生成し、残りのステートメントが実行されない場合、最初の99個の要素が成功を示し、100番目の要素がStatement.EXECUTE_FAILEDを示す100個の要素の配列を取得する必要があります。コード> 。次に、コードは実行されなかったステートメント(この場合はステートメント101-1000)を再試行する必要があります。