# Was passiert wenn eine Datenbankverbindung unterbricht



## Achill (14. Aug 2004)

Moin moin!
Ich habe einen Chatserver geschrieben, der auf eine MySQL-Datenbank zugreift. Als Treiber, damit ich per JDBC auf die Datenbank zugreifen kann, benutz ich den mysql-connector-java-3.0.14-production-bin.jar, der von MySQL angeboten wird. Beim Start des Chatserver verbindet sich dieser mit der Datenbank und hält die Verbindung solange der Chatserver läuft. Was passiert aber, wenn die Verbindung zur Datenbank kurzzeitig, z.B. wegen einem mysql restart, unterbrochen
wird? Muss ich mich dann nochmal mit der Datenbank verbinden oder wird die Verbindung automatisch wiederhergestellt?

Danke im vorraus
Achill


----------



## Guest (14. Aug 2004)

Neu verbinden.
Du kriegst eine SQLException (sowas wie "Connection reset by peer" o.ä.)


----------



## Achill (14. Aug 2004)

Ich habs probiert, aber es funktioniert irgendwie nicht.Kann mir bitte jemand ein Beispiel dafür posten?


----------



## Guest (15. Aug 2004)

Die typische Reaktion auf solche Fehler ist die Anzeige
einer allgemein gehaltenen Fehlermeldung und "sauberer" Abbruch der aktuellen Aktivität.

z.B. wenn eine SQL-Exception kommt.
Es ist ein Fehler beim Zugriff auf die Datenbank aufgetreten.
Bitte wenden Sie sich an den Systemadministrator...

Die Verbindung kann nämlich auch beim Ausführen einer Query
scheitern. Solche Fehler, die "aussergewöhnlich" sind, kannst Du nicht an allen Stellen im Programm abfangen. Der Aufwand ist
unverhältnissmässig groß.

Erstelle am besten einer Art ConnectionFactory, wo Du die zurückgegebenen Connection-Objekte vorher prüfst.
Siehe Connection.isClosed() etc.


----------



## Achill (16. Aug 2004)

Ich bin das Problem jetzt folgendermßen angegangen.
Ich hab im catch-block er SQL-Exception folgende Funktion aufgerufen:


```
synchronized private void refresh_cl_db_verbindung()
{
	// Dient dem Wiederherstellen der Datenbankverbindung
	try
	{
		while (cl_db_verbindung.isClosed())
		{
			try
			{
				cl_db_verbindung = DriverManager.getConnection(db_url, db_benutzername, db_passwort);
			} catch (SQLException sqle)
			{
			}
		}
	} catch (SQLException sqle2)
	{
		System.err.println("FEHLER: " + sqle2.toString() + " - " + sqle2.getErrorCode() + " - " + qle2.getSQLState());
	}
}
```

[Danke noch an den Gast für seine Hilfe  ]


----------



## Guest (16. Aug 2004)

Bin ein (Dauer)gast. Habe das Passwort vergessen 

Gruß,
Michael (semi)


----------



## pogo (17. Aug 2004)

Anonymous hat gesagt.:
			
		

> Bin ein (Dauer)gast. Habe das Passwort vergessen
> 
> Gruß,
> Michael (semi)



es gibt scheints eine möglichkeit sich sein pw zuschicken zu lassen.
du musst einfach auf login klicken.
dann steht ganz unten ich habe mein pw vergessen 
und da kann man es sich dann zuschicken lassen


----------



## Guest (17. Aug 2004)

Klar, da kommt aber immer die Meldung
"Emailadresse stimmt nicht mit dem Benutzernamen überein",
was garantiert nicht stimmt (es sei dann ich spinne ).

Bist Du ein Admin hier? Schick' bitte eine Email an "semi".


----------

