Uvádíte, že provádíte dávky příkazů SQL, takže předpokládám, že používáte executeBatch
. Když executeBatch
dávky příkazů, některé příkazy mohou být úspěšné a některé mohou selhat. Pokud jeden příkaz selže, neznamená to, že ovladač JDBC vrátí zpět příkazy, které byly úspěšné. Ovladač JDBC se může rozhodnout, že se pokusí provést všechny příkazy v dávce, pokud jeden příkaz selže, nebo se může rozhodnout, že zastaví provádění příkazů v dávce, jakmile příkaz selže (zní to, jako by se ovladač, který používáte, rozhodl zastavit provádění příkazů jako jakmile dojde k poruše).
Když jeden příkaz v dávce selže, měli byste dostat BatchUpdateException
. Ve vaší obslužné rutině výjimek musíte zavolat getUpdateCounts
. To vám dá pole int
který vám řekne, kolik řádků byl příkaz aktualizován, Statement.SUCCESS_NO_INFO
označující, že příkaz byl úspěšný, ale nebyl k dispozici žádný počet řádků, nebo Statement.EXECUTE_FAILED
což naznačuje, že prohlášení selhalo. Pokud je prvních 99 příkazů úspěšných, 100. příkaz vygeneruje chybu a zbývající příkazy se neprovedou, měli byste získat zpět pole 100 prvků, kde prvních 99 prvků označuje úspěch a 100. prvek označuje Statement.EXECUTE_FAILED . Váš kód by pak musel zopakovat ty příkazy, které nebyly provedeny (v tomto případě příkazy 101-1000).