Oświadczasz, że wykonujesz partie instrukcji SQL, więc zakładam, że używasz executeBatch
. Kiedy wykonaszBatch
partii oświadczeń, niektóre z nich mogą się powieść, a niektóre nie. Jeśli jedna instrukcja nie powiedzie się, nie oznacza to, że sterownik JDBC wycofuje instrukcje, które się powiodły. Sterownik JDBC może podjąć próbę wykonania wszystkich instrukcji w paczce, jeśli jedna instrukcja nie powiedzie się lub może zatrzymaćwykonywanie instrukcji w paczce po niepowodzeniu instrukcji (wygląda na to, że używany sterownik zdecyduje się zatrzymaćwykonywanie instrukcji zaraz po wystąpieniu awarii).
Gdy jedna instrukcja w partii nie powiedzie się, powinieneś otrzymać BatchUpdateException
. W programie obsługi wyjątków musisz wywołać getUpdateCounts
. To da ci tablicę int
który informuje o tym, ile wierszy zostało zaktualizowanych w oświadczeniu, Statement.SUCCESS_NO_INFO
wskazujące, że instrukcja powiodła się, ale nie była dostępna liczba wierszy, lub Statement.EXECUTE_FAILED
wskazując, że oświadczenie nie powiodło się. Jeśli pierwsze 99 instrukcji się powiedzie, 100. instrukcja wygeneruje błąd, a pozostałe instrukcje nie zostaną wykonane, powinieneś otrzymać tablicę 100 elementów, w której pierwsze 99 elementów wskazuje na sukces, a 100. wskazuje na Statement.EXECUTE_FAILED . Twój kod musiałby wtedy ponownie spróbować tych instrukcji, które nie zostały wykonane (w tym przypadku instrukcji 101-1000).