Você afirma que está executando lotes de instruções SQL, então estou assumindo que você está usando
executeBatch
. Quando você executeBatch
um lote de instruções, algumas das instruções podem ser bem-sucedidas e outras podem falhar. Se uma instrução falhar, isso não significa que o driver JDBC reverte as instruções bem-sucedidas. O driver JDBC pode optar por tentar executar todas as instruções no lote se uma instrução falhar ou pode optar por interromper a execução de instruções no lote quando uma instrução falhar (parece que o driver que você está usando opta por parar de executar instruções como assim que houver uma falha). Quando uma instrução em um lote falha, você deve obter uma
BatchUpdateException
. Em seu manipulador de exceção, você precisa chamar getUpdateCounts
. Isso lhe dará uma matriz de int
que informa quantas linhas a instrução atualizou, um Statement.SUCCESS_NO_INFO
indicando que a instrução foi bem-sucedida, mas nenhuma contagem de linhas estava disponível ou um Statement.EXECUTE_FAILED
indicando que a declaração falhou. Se as primeiras 99 instruções forem bem-sucedidas, a 100ª instrução gerar um erro e as instruções restantes não forem executadas, você deverá obter de volta uma matriz de 100 elementos onde os primeiros 99 elementos indicam sucesso e o 100º elemento indica Statement.EXECUTE_FAILED . Seu código precisaria tentar novamente as instruções que não foram executadas (neste caso, as instruções 101-1000).