# Statements und Resultset Allgemein



## rtt (19. Jul 2005)

Hallo,
ich habe mal eine grundlegende Frage zu Statements und Resultsets.
Wenn ich eine DBverbindung mache und mehrere Selects habe, benutzt man da nur ein Statement oder für jeden Select ein eigenes? Wo liegt der Unterschied. Gibt es Probleme, wenn man mehrere Statements benutzt?
Wenn ich meine Ergebnisse aus der DB gelesen habe, setzt ich das Statement wieder auf null oder muss ich das Statement schließen?
Sollte man auch das ResultSet wieder schließen?

Danke schonmal
Gruß Robin


----------



## perdian (19. Jul 2005)

rtt hat gesagt.:
			
		

> Wenn ich eine DBverbindung mache und mehrere Selects habe, benutzt man da nur ein Statement oder für jeden Select ein eigenes?


Das kommt darauf an, ob die Datenbankanfragen sequentiell oder parallel vearbeitet werden sollen.



			
				java.sql.Statement hat gesagt.:
			
		

> By default, only one ResultSet object per Statement object can be open at the same time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists.





			
				rtt hat gesagt.:
			
		

> Wenn ich meine Ergebnisse aus der DB gelesen habe, setzt ich das Statement wieder auf null oder muss ich das Statement schließen?



Auch hier hilft ein Blick in die API:



			
				java.sql.Statement#close() hat gesagt.:
			
		

> Releases this Statement object's database and JDBC resources immediately instead of waiting for this to happen when it is automatically closed. It is generally good practice to release resources as soon as you are finished with them to avoid tying up database resources.





			
				rtt hat gesagt.:
			
		

> Sollte man auch das ResultSet wieder schließen?


Je nach Datenbank musst du es sogar nach der Verwendung wieder schließen, ansonsten erhälst du eine Fehlermeldung in der Art "Too many open cursors". Es reicht auch das Statement zu schließen, von dem das ResultSet erzeugt worden ist, aber geschlossen werden sollte es in jedem Fall.



			
				java.sql.ResultSet#close() hat gesagt.:
			
		

> Releases this ResultSet object's database and JDBC resources immediately instead of waiting for this to happen when it is automatically closed.
> Note: A ResultSet object is automatically closed by the Statement object that generated it when that Statement object is closed, re-executed, or is used to retrieve the next result from a sequence of multiple results. A ResultSet object is also automatically closed when it is garbage collected.


----------



## rtt (19. Jul 2005)

Vielen Dank für die Hinweise


----------

