Sie geben an, dass Sie Stapel von SQL-Anweisungen ausführen, also gehe ich davon aus, dass Sie executeBatch
verwenden . Wenn Sie batch ausführen
einen Stapel von Anweisungen, können einige der Anweisungen erfolgreich sein und einige der Anweisungen fehlschlagen. Wenn eine Anweisung fehlschlägt, bedeutet dies nicht, dass der JDBC-Treiber die erfolgreichen Anweisungen rückgängig macht. Der JDBC-Treiber kann versuchen, alle Anweisungen im Stapel auszuführen, wenn eine Anweisung fehlschlägt, oder er kann die Ausführung von Anweisungen im Stapel stoppen, sobald eine Anweisung fehlschlägt (es hört sich so an, als würde der von Ihnen verwendete Treiber die Ausführung von Anweisungen als beenden sobald ein Fehler auftritt).
Wenn eine Anweisung in einem Stapel fehlschlägt, sollten Sie eine BatchUpdateException
erhalten . In Ihrem Ausnahmehandler müssen Sie getUpdateCounts
aufrufen . Das gibt Ihnen ein Array von int
das sagt Ihnen entweder, wie viele Zeilen die Anweisung aktualisiert hat, oder ein Statement.SUCCESS_NO_INFO
was anzeigt, dass die Anweisung erfolgreich war, aber keine Zeilenanzahl verfügbar war, oder ein Statement.EXECUTE_FAILED
zeigt an, dass die Anweisung fehlgeschlagen ist. Wenn die ersten 99 Anweisungen erfolgreich sind, die 100. Anweisung einen Fehler generiert und die verbleibenden Anweisungen nicht ausgeführt werden, sollten Sie ein Array mit 100 Elementen zurückerhalten, wobei die ersten 99 Elemente den Erfolg anzeigen und das 100. Element Statement.EXECUTE_FAILED . Ihr Code müsste dann die Anweisungen wiederholen, die nicht ausgeführt wurden (in diesem Fall die Anweisungen 101-1000).