hi leute, ich habe hier ein Problem mit "verschachtelten" SQL-Anweisungen:
das Problem ist glaube ich das das Statement der ersten Abfrge noch in Verwenung ist während ich versuche mit dem selben Statement die nächste Abfrage zu starten. Wie kann ich also das Statement zurücksetzen.
Mit
kommt die Exception "Objekt wurde abgeschlossen"
bei
kommt ne NullPointerException bei der ersten INSERT-Anweisung.
Danke für eure Hilfe
ben[/code]
Code:
if (query.getQuery()) {
ResultSet res = query.getResult();
String old_mtrx_id = "";
while(res.next()) {
//einfügen der neuen Datensätze in TBL_MTRX
old_mtrx_id = res.getString(1);
sql = "INSERT INTO TBL_MTRX(fz_id, sp_id,ls_id,_ref_zgs,status,serie) VALUES('"
+res.getString(2)+"','"+new_id+"','"+res.getString(4)+"','"
+res.getString(5)+"','0','"+res.getString(7)+"')";
stmt.close();
update.setStmt(stmt);
update.setSql(sql);
if ((update.getResult()) > 0) {
out.println("Datensatz in TBL_MTRX uebernommen");
}
else {
out.println(update.getAusgabe());
}
//auslesen der mtrx_id des neu angelegten Datensatzes
sql = "SELECT MAX(mtrx_id) FROM TBL_MTRX";
int new_mtrx_id = 0;
stmt.close();
query.setStmt(stmt);
query.setSql(sql);
if (query.getQuery()) {
ResultSet res2 = query.getResult();
res2.next();
new_mtrx_id = Integer.parseInt(res2.getString(1));
}
else {
out.println("Kann new_mtrx_id nicht auslesen");
}
//einfuegen des Auftrags in TBL_AUFT
sql = "INSERT INTO TBL_AUFT(mtrx_id_old_slp,mtrx_id_new_slp, slp_id_old, slp_id_new, slp_bearb, slp_kem, status)"
+"VALUES('"+old_mtrx_id+"','"+new_mtrx_id+"','"+data+"','"+new_id+"','fehlt noch','9')";
stmt.close();
update.setStmt(stmt);
update.setSql(sql);
if ((update.getResult()) > 0) {
out.println("Datensatz in TBL_AUFT geschrieben");
}
else {
out.println("Kann Datensatz nicht in TBL_AUFT schreiben");
}
}
}
else {
out.println("Kein Datenbank-Connect moeglich");
}
das Problem ist glaube ich das das Statement der ersten Abfrge noch in Verwenung ist während ich versuche mit dem selben Statement die nächste Abfrage zu starten. Wie kann ich also das Statement zurücksetzen.
Mit
Code:
stmt.close();
bei
Code:
stmt = null;
Danke für eure Hilfe
ben[/code]