sql >> Database teknologi >  >> RDS >> Oracle

JDBC Batch-indsæt undtagelseshåndtering

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).



  1. dvale med c3p0:createClob() er endnu ikke implementeret

  2. SQLite IN

  3. Hvordan opretter man et bord med to eller flere fremmednøgler ved hjælp af Android Room?

  4. Bestemmelse af OID for en tabel i Postgres 9.1?