# db connection wann schließen



## Krabat (23. Feb 2006)

Hallo,

wenn ich eine db verbindung aufbaue und eine sql Abfrage ausführe und danach nochmals eine andere Abfrage ausführen will, soll ich die Verbinung komplett schließen und neu aufbauen oder nur den ResultSet schließen?


```
DriverManager.registerDriver((Driver) Class.forName(driver).newInstance());
Cennection con = DriverManager.getConnection(conCmd, user, pass);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);

...processing...

rs.close();
stmt.close();
con.close();
```

Weil die komplette Verbindung wieder neu ab- und wieder aufzubauen, scheint einige Zeit in Anspruch zu nehmen.


----------



## SamHotte (23. Feb 2006)

Die Connection solltest du offen lassen, der Verbindungsaufbau dauert i.Allg. ziemlich. Das Statement und den ResultSet dagegen schließe ich meistens sofort wieder (muss aber nicht heißen, dass man das muss - ich hab mir nur die Struktur mal angewöhnt ;-)


----------



## Bleiglanz (24. Feb 2006)

wie lange ist denn die Pause zwischen 2 Befehlen?

was für eine Art von Anwendung ist das?

wieviele Connections darft du gleichzeitig zur DB öffnen?

usw. usf.

Faustregel ist: immer sofort zumachen, da sonst Server Ressourcen belegt werden, je nach Anwendung kann man das aber auch anders handhaben

leider ist ein connect relativ "teuer", weshalb die "sofort schliessen" regel etwas problematisch ist


----------



## Oni (3. Nov 2006)

hi,

ich möche das thema nochmal aufgreifen. 
was passiert denn, wenn man eine connection garnicht mehr schliesst ( mit .close() )? gibt mysql die ressourcen wieder frei wenn die connection nicht geschlossen, aber die java-anwendung beendet wird?

problem ist:
das programm laeuft 24 std am tag, 7 tage die woche.
alle 5-6 std. kommen ca 2000 eintraege in die datenbank. jeder eintag mit ca 1 sekunde abstand.

jetzt möchte ich eigentlich nicht nach jedem eintrag die connection schliessen und wieder neu auf machen. was passiert wenn ich die connection einfach offen lasse, frist das dann zuviel ressourcen? 

hat einer erfahrung mit sowas?

gruß


----------



## bronks (3. Nov 2006)

Oni hat gesagt.:
			
		

> ... jetzt möchte ich eigentlich nicht nach jedem eintrag die connection schliessen und wieder neu auf machen. was passiert wenn ich die connection einfach offen lasse, frist das dann zuviel ressourcen?
> 
> hat einer erfahrung mit sowas?


Wenn eine Verbindung dauerhaft gehalten wird, dann ist das kein Problem.  ConnectionPool halten oft dutzende von Verbindungen.


----------

