# Geschlossenes ResultSet



## BigBoss (23. Jan 2008)

hi,
ich hab ein Problem. Ich bekomme sporatisch diese Fehlermeldung:

java.sql.SQLException: Operation not allowed after ResultSet closed
  com.mysql.jdbc.ResultSet.checkClosed(ResultSet.java:3601)
  com.mysql.jdbc.ResultSet.next(ResultSet.java:2478)
  com.mysql.jdbc.UpdatableResultSet.next(UpdatableResultSet.java:558)
  chooseTable.<init>(chooseTable.java:57)
  postMainFrame.changeTable(postMainFrame.java:633)
  postMainFrame.<init>(postMainFrame.java:126)
  postMainFrame.main(postMainFrame.java:200)


Der Code dazu ist:

```
result = dbv1.ExecQ(sqlquery);
while(result.next())
{
     cbotables.addItem(result.getString("tablename"));
}//ende while
```

Wobei der Fehler im Kopf der While Schleife auftritt. ( chooseTable.<init>(chooseTable.java:57) )
hat jemand ne Idee wie das direkte abfragen eines Resultsets nach dessen Erstellung zu dieser Exception führen kann?
Mir fehlt da irgendwie der richtige Denkansatz.
Gruß & thx BB


----------



## The_S (23. Jan 2008)

Was macht denn diese Methode "dbv1.ExecQ(sqlquery); "? Wird darin evtl. das ResultSet geschlossen?


----------



## maki (23. Jan 2008)

Was ist denn cbotables?

Ein anderes ResultSet, womöglich durch das selbe Statement erzeugt?


----------



## BigBoss (23. Jan 2008)

hi,

```
public ResultSet ExecQ(String sqlquery)throws SQLException
    {
        return s.executeQuery(sqlquery);
    }//ende ExecQ
```

hier wird einfach der query an ein statementobject übergeben ich habe alles was das Handling der Verbindung zur DB angeht in eine eigene Klasse gepackt.
Das Resultset wird dort definitiv nicht geschlossen.


----------



## BigBoss (23. Jan 2008)

@maki
cbotables ist eine Combobox (Dropdownfeld oder wie man das auch immer bezeichnet)
Es wird zwischen der Abfrage und dem auswerten kein neues Resultset erzeugt.
Wie gesagt der Fehler tritt immer nur sporatisch auf und lässt sich auch nicht nachstellen was eine Fehleranalyse sehr schwierig macht.
BB


----------



## maki (23. Jan 2008)

Wird ExecQ vielleicht nebenläufig von mehreren Threads aufgerufen?


----------



## BigBoss (23. Jan 2008)

@maki
nein es läuft zu dieser zeit kein thread der auf das object zugreifen könnte.

```
chooseTable chtable = new chooseTable(new java.awt.Frame(),userProps,dbv1,title,jahr,true);
chtable.setVisible(true);
```
das Fenster läuft auch als modal Dialog welcher das gesamte Programm bis zur Bestätigung des Fensters durch den User anhällt.
Diese Fenster is bestandteil eines Loginsystem ohne das das weitere ausführen des Programmes nicht möglich ist bzw das Programm mit einer Exception beendet werden würde.
Gruß BB


----------

