Du angiver, at du udfører batches af SQL-sætninger, så jeg antager, at du bruger executeBatch
. Når du udførerBatch
en batch af udsagn, kan nogle af udsagn lykkes, og nogle af udsagn kan mislykkes. Hvis en sætning fejler, betyder det ikke, at JDBC-driveren ruller de sætninger tilbage, der lykkedes. JDBC-driveren kan vælge at forsøge at udføre alle sætningerne i batchen, hvis en sætning mislykkes, eller den kan vælge at stoppe med at udføre sætninger i partiet, når en sætning mislykkes (det lyder som om den driver, du bruger, vælger at stoppe med at udføre sætninger som så snart der er en fejl).
Når en sætning i en batch fejler, bør du få en BatchUpdateException
. I din undtagelsesbehandler skal du kalde getUpdateCounts
. Det vil give dig en matrix af int
der fortæller dig enten, hvor mange rækker sætningen opdaterede, en Statement.SUCCESS_NO_INFO
angiver, at sætningen lykkedes, men ingen rækker var tilgængelig, eller en Statement.EXECUTE_FAILED
hvilket indikerer, at erklæringen mislykkedes. Hvis de første 99 sætninger lykkes, den 100. sætning genererer en fejl, og de resterende sætninger ikke udføres, bør du få et 100 element array tilbage, hvor de første 99 elementer angiver succes, og det 100. element angiver Statement.EXECUTE_FAILED . Din kode skal derefter gentage de sætninger, der ikke blev udført (i dette tilfælde sætninger 101-1000).