Ich führe jedes Mal, wenn mein Programm ausgeführt wird, einen JDBC-Batch-Einfügevorgang durch (Einfügen von jeweils etwa 1000 Zeilen). Aber ich bin nicht in der Lage, die Ausnahme zu behandeln, die von einigen der Datensätze richtig ausgelöst wird.JDBC Batch-Insert-Ausnahmebehandlung
Angenommen, der 100. Datensatz von 1000 Datensätzen gibt eine Ausnahme aus, weil ungültige Daten oder die Größe eines Werts die Spaltengröße überschreitet. Sobald die Ausnahme aufgetreten ist, die verbleibenden Datensätze werden nicht eingefügt und das Programm schlägt dazwischen.
Was ich will ist, selbst wenn der 100. Datensatz Ausnahme wirft, sollten die restlichen Einfügungen wie üblich geschehen, bevor mein Programm endet.
Ich bin nicht in der Lage zu verstehen, wie dies zu erreichen ist. Bitte vorschlagen.
EDIT:
Hier ist ein Beispielcode ich in meiner App für Masseneinfügemodus verwenden. Angenommen, die Ergebnismenge hat ca. 1000 Datensätze.
PreparedStatement ps = null;
while(rs.next()){
//Retrieve the value and set it to a Prepared statement
String name = rs.getString("Name");
int age = rs.getInt("Age");
ps.setInt(1, age);
ps.setString(2, name);
//Finally invoke addBatch
ps.addBatch();
}
//Finally call the executeBatch method
ps.executeBatch();
Wenn der 100. Rekord eine Ausnahme wirft, dann will ich nur von dem 100. zu 1000. Rekord, den Prozess auszulösen. Gibt es eine Möglichkeit, dies zu tun, so dass ich den Prozess von dem Datensatz neu starten kann, der Ausnahme und bis zum Ende wieder warf? Wie erreiche ich das?
Und Ihr Code ist? – Alfabravo