MySQL Bekomme einen Fehler beim ResultSet

Linda1999

Mitglied
Hi, ich wollte mir heute eine DatabaseHandler Klasse schreiben, ich habe auch einiges geschafft, aber jetzt wollte ich einen executeQuery befehl einbauen, da bekam ich immer einen Fehler beim resultset.
Der Fehler lautet: Operation not allowed after ResultSet closed
Hier sind zwei links zu Main.java und DatabaseHelper.java

Main.java: https://hastebin.com/fajuzilime.swift
DatabaseHelper.java: https://hastebin.com/aqulepazeq.java

Ich habe schon gegoogled, und irgendwas gefunden mit ein Statment kann nur 1 resultset haben, aber ich kenne mich da net so gut aus 😱
 
Ich habe in einem alten Programm von mir nachgeschaut. Dort wird Statement verwendet.
Java:
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("Select MAX(" + column + "ID) from " + column);
rs.next();
id = rs.getInt(1);
stmt.close();
 
Wieso dann swift als Dateiendung?
Ich weiß nicht, hastebin wollte es so 😀

Ich habe in einem alten Programm von mir nachgeschaut. Dort wird Statement verwendet.
Java:
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("Select MAX(" + column + "ID) from " + column);
rs.next();
id = rs.getInt(1);
stmt.close();
Ja danke dafür, ich glaube, ich darf das statement davor noch nicht schließen.
 
Also wenn ich es so mache:

ResultSet rs = statment.executeQuery("SELECt blabla");

dann kann ich mit dem arbeiten, weil das statment noch offen ist und ich noch nicht .close gemacht habe.

aber wenn ich dann. rs.getStatement().close();

mache. ist das das selbe statement wie oben?? :|
 
Jop. getStament() gibt das Statement zurück, das nötig war, um das ResultSet zu erzeugen. Würde aber eher stmt.close() präferieren, wenn man schon an das originale Statement-Objekt rankommt. ^^

Ja aber ich weiß nicht wie ich das machen soll, da müsste ich das statement durch getter holen und schließen und ich kanns dann in dbhandler.java nicht direkt schließen und ich müsste eines für die klasse globales anlegen :| weil ich nach schließen des statements mit dem resultset arbeiten möchte.
 
Ich würde den DB-Kram aus Main raushalten, du machst es dir deutlich leichter, wenn die Methode zB die UUID direkt zurück gibt
 
Ja aber ich weiß nicht wie ich das machen soll, da müsste ich das statement durch getter holen und schließen und ich kanns dann in dbhandler.java nicht direkt schließen und ich müsste eines für die klasse globales anlegen :| weil ich nach schließen des statements mit dem resultset arbeiten möchte.
ResultSet selbst hat auch eine eigene close-Methode, ich glaub, es reicht, wenn du die aufrufst, dann sollte das Statement auch geschlossen werden, soweit ich weiß.
 

Neue Themen


Zurück
Oben