# Datenbank wird nicht geschlossen - problematisch?



## Proggy (3. Mrz 2007)

Hallo,

was passiert eigentlich, wenn man die Connection zu einer MYSQL-DB bei seinem Provider nicht schliesst?
Habe ein Applet prgrammiert und kann die Connection nicht schließen, bin noch auf der Fehlersuche. Wenn da jetzt viele gleichzeitig auf das Applet zugreifen werden, was passieren kann, was passiert dann?


Gruß
Proggy


----------



## Guest (3. Mrz 2007)

Die Connection wird automatisch geschlossen, wenn das entsprechende Connection-Instanz vom 
Garbage Collector "aufgesammelt" wird.
Da der Zeitpunkt wann dies passiert nicht von dir beeinflussbar ist, kann es dazu kommen, dass zu 
viele Connections zur Datenbank geöffnet bleibene und weitere Connections abgewiesen werden.

Grundsätzlich gilt: Connections so lange halten wie unbedingt nötig und so früh freibgeben wie möglich.

Das Schliessen einer connection kannst du mit einem finally-Block sicherstellen. z.B.
	
	
	
	





```
Connection connection = null;
PreparedStatement statement = null;
try
{
   connection = ...
   ...
}
catch(SQLException e)
{
   // Fehlerbehandlung
}
finally
{
   // PreparedStatement und Connection freigeben
   if(statement != null)
   {
      try 
      { 
         statement.close(); 
      } 
      catch(SQLException e) 
      { 
         Logger.error(e, ...); 
      } 
   }
   if(connection != null)
   {
      try 
      { 
         connection.close(); 
      } 
      catch(SQLException e) 
      { 
         Logger.error(e, ...); 
      } 
   }
}
```


----------



## L-ectron-X (3. Mrz 2007)

Bei einem Applet kann der Code zum Schließen einer Datenbankverbindung auch in der destroy()-Methode untergebracht werden. Dann wird Verbindung spätestens mit Beenden des Browsers geschlossen.


----------

