# statements und resultsets schließen



## Feld (3. Dez 2009)

Hallo

ich habe da eine kleine Funktion


```
protected ResultSet recieveSet ( String in_query ) throws SQLException
	{
		Statement stmt;
		stmt = cn.createStatement ( ResultSet.CLOSE_CURSORS_AT_COMMIT, ResultSet.CONCUR_UPDATABLE );
		try
		{
			ResultSet rs = stmt.executeQuery ( in_query );
			// stmt.close ( );
			return rs;
		} catch ( SQLException e )
		{
			stmt.cancel ( );
		}
		return null;
	}
```

danach sol ldas Ergebnis weiter verarbeitet werden.
So wie ich es sehe hole ich mir mein ResultSet und danach schließe den Statement - aber wenn ich jetzt _stmt.close ( );_ auskomentiere, dann bekomme ich Exception das der Statement geschlosen ist - wieso?

und wenn ich den jetzt gar nicht schließe, wann wird der dann geschloßen? Erst wenn ich die verbindung abbaue?

Desweiteren möchte ich wissen zu welchem Zeitpunk _ResultSet.CLOSE_CURSORS_AT_COMMIT_ mein ResultSet abschließt? -Gleich nach dem empfangen kann es ja nicht machen - wann dann?

Danke


----------



## fastjack (3. Dez 2009)

Das ResultSet wird automatisch geschlossen, wenn Du das Statement schließt (siehe API ResultSet). Besser ist, wenn Du in der Methode das ResultSet abarbeitest und eine Collection etc. als Rückgabewert zurück gibt. ResultSet sollte man nach der Bearbeitung auch wieder schließen, um die Resourcen(Tabelle) wieder freizugeben.

ResultSet.CLOSE_CURSORS_AT_COMMIT, ResultSet.CONCUR_UPDATABLE --> siehe API ResultSet


----------



## Feld (4. Dez 2009)

Ok, nun habe ich den Durchblick - zuvor sah ich alles Einzeln, aber der Zusammenhang fehlte - nun klar - Danke


----------

