# Maximale Anzahl offener Cursor überschritten



## apa13179 (24. Feb 2017)

Hallo,
ich habe meine Programm so strukturiert, dass ich in einer extra Klasse den Connect zur DB erstelle.
Das wird mit Start des Programms initializiert.
Im Folgenden rufe bzw. manipuliere ich mit einer anderen Klasse verschiedene Daten aus der DB ab.
Leider kommt es nach einer Zeit zum Fehler:
_java.sql.SQLException: ORA-01000: Maximale Anzahl offener Cursor überschritten
_
Alle SQL-Statements habe ich wie folgt geschrieben:

```
static String getStringQuery(String query) throws SQLException{
        String strgRecs = "";  
      
        try (ResultSet rs = Window.state.getConnToDB().getStatement().executeQuery(query)) {
            while(rs.next()){
                strgRecs = rs.getString(1);
            }
        }
        return strgRecs;
    }
```


----------



## Thallius (24. Feb 2017)

Jo vielleicht solltest du einfach mal die statements und resultsets auch wieder schliessen?

Aus welchem ober schlauen Code hast du denn die Zeile kopiert?


----------



## Joose (24. Feb 2017)

Code bitte in Code-Tags posten, danke! 
[code=java] .. dein code ... [/code]


----------



## apa13179 (24. Feb 2017)

@Thallius: Warum kopiert? Was gefällt dir daran nicht?
Ich dachte im Try-With-Resource Statement leben die Objekte nur bis zum Ende des Blockes?

@Joose: Geht klar


----------



## mrBrown (24. Feb 2017)

apa13179 hat gesagt.:


> Ich dachte im Try-With-Resource Statement leben die Objekte nur bis zum Ende des Blockes?



Werden sie auch, in deinem Fall aber nur das ResultSet, das Statement wird ja da nicht deklariert 
Um beides zu schließen, musst du auch beides angeben


----------



## apa13179 (24. Feb 2017)

Danke.
Hat geklappt


----------

