verschachtelte SQL-Statements

Status
Nicht offen für weitere Antworten.

schnoupf

Neues Mitglied
hi leute, ich habe hier ein Problem mit "verschachtelten" SQL-Anweisungen:
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();
kommt die Exception "Objekt wurde abgeschlossen"
bei
Code:
stmt = null;
kommt ne NullPointerException bei der ersten INSERT-Anweisung.

Danke für eure Hilfe

ben[/code]
 
S

SlaterB

Gast
ein Statement zu recyclen geht vielleicht nicht,
was spricht gegen ein neues?
connection.getStatement() oder wie auch immer das heißt
 

schnoupf

Neues Mitglied
dankeschön das hat geholfen, habe in meiner Bean einfach ein 2tes Statement angelegt das dann die verschachtelten Anweisungen ausführt...

gruß schnoupf
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben