Hallo
Ich versuche seit Tagen herauszufinden wieso das Programm immer wieder bei der selben Aktion einfriert.
Das ganze funktioniert auch, bis auf eine Situation, wenn der oberste Eintrag aus dem JComboBox gewählt wird, friert das ganze ein.
Mit einfrieren meine ich, dass keine Fehlermeldung auftritt, dass sich nichts mehr in der GUI anklicken lässt (auch nicht das X vom JFrame zum schlessen) und das Programm sich nur noch mittels 'Terminate' in Eclipse schliessen lässt.
Den Ort des Verbrechens habe ich mittels sysout mal eingegrenzt: Das Problem scheint bei der Zeile 18 aufzutreten.
Die Ausgabe in der Konsole sieht wie folgt aus:
Der erste Eintrag wird biem Starten des JFrame gesetzt. Wenn ich nun andere Einträge aus der JComboBox auswähle klappt alles. Sobald ich aber wider den ersten Eintrag auswähle, friert es ein.
Hat da jemand eine Idee? Ich gehe davon aus, dass es an rs.last() liegt. Ich weiss aber nicht wo ich noch suchen muss, oder welcher Codeschnippsel noch weiterhelfen könnte.
Grüsse Kris
Ich versuche seit Tagen herauszufinden wieso das Programm immer wieder bei der selben Aktion einfriert.
- In einer GUI kann ich über ein JComboBox Tabellen aus der Datenbank wählen.
- In einer JTable werden daraufhin die Daten der Datenbank Tabelle angezeigt.
- Das Füllen der JTable läuft über eine TableModel.
Das ganze funktioniert auch, bis auf eine Situation, wenn der oberste Eintrag aus dem JComboBox gewählt wird, friert das ganze ein.
Mit einfrieren meine ich, dass keine Fehlermeldung auftritt, dass sich nichts mehr in der GUI anklicken lässt (auch nicht das X vom JFrame zum schlessen) und das Programm sich nur noch mittels 'Terminate' in Eclipse schliessen lässt.
Den Ort des Verbrechens habe ich mittels sysout mal eingegrenzt: Das Problem scheint bei der Zeile 18 aufzutreten.
Java:
public ResultSet executeSelect(String query) {
this.qrySelect = query;
System.out.println("Neuer Eintrag in der JComboBox gewählt -> SQL : "+query);
try {
stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
if (stmt.execute(query)) {
rs = stmt.getResultSet();
rsMeta = rs.getMetaData();
columnCount = rsMeta.getColumnCount();
// Zeilenanzahl
System.out.println("rs.last() wird gestartet --> DBHanlder.executeSelect()");
try {
rs.last(); // FIX funktioniert nicht bei der Wahl des Obersten Eintrags in der CobmoBox
System.out.println("rs.last() hat funktioniert --> DBHanlder.executeSelect()");
} catch (Exception e) {
System.out.println("rs.last() ist fehlgeschlagen --> DBHanlder.executeSelect()");
e.printStackTrace();
}
rowCount = rs.getRow();
rs.beforeFirst();
} else
rs = null;
} catch (SQLException e) {
System.out.println("Fehler bei der Datenübergabe von der Datenbank in das ResultSet.");
e.printStackTrace();
}
return rs;
}
Die Ausgabe in der Konsole sieht wie folgt aus:
Java:
Neuer Eintrag in der JComboBox gewählt -> SQL : SELECT * FROM APP.TBLADRESSE
rs.last() wird gestartet --> DBHanlder.executeSelect()
rs.last() hat funktioniert --> DBHanlder.executeSelect()
Neuer Eintrag in der JComboBox gewählt -> SQL : SELECT * FROM APP.TBLINSTITUTION
rs.last() wird gestartet --> DBHanlder.executeSelect()
rs.last() hat funktioniert --> DBHanlder.executeSelect()
Neuer Eintrag in der JComboBox gewählt -> SQL : SELECT * FROM APP.TBLMATERIAL
rs.last() wird gestartet --> DBHanlder.executeSelect()
rs.last() hat funktioniert --> DBHanlder.executeSelect()
Neuer Eintrag in der JComboBox gewählt -> SQL : SELECT * FROM APP.TBLADRESSE
rs.last() wird gestartet --> DBHanlder.executeSelect()
Der erste Eintrag wird biem Starten des JFrame gesetzt. Wenn ich nun andere Einträge aus der JComboBox auswähle klappt alles. Sobald ich aber wider den ersten Eintrag auswähle, friert es ein.
Hat da jemand eine Idee? Ich gehe davon aus, dass es an rs.last() liegt. Ich weiss aber nicht wo ich noch suchen muss, oder welcher Codeschnippsel noch weiterhelfen könnte.
Grüsse Kris