Verbindung zum MySql Server wird nicht geschlossen!

mimoun

Grünschnabel
Hallo,
in einem Prozess lese ich alle Zeilen einer Tabelle "user". Dazu öffne ich ein Verbindung zum DB Server, die ich am Ende des Prozesses wieder schliesse. (siehe Funktion GetList()).
Das funktioniert auch gut.
Das Problem ist, Der DB Server kriegt es nicht mit, wenn ich die Verbindung schliesse. Sie bleibt solang offen, bis die Anwendung beendet wird.
Dh. wenn ich 100 Instanzen dieser Anwendung starte habe ich 100 offene Verbindungen zum DB Server.
Weiss jemand, wie ich dem Server dies besser mitteilen kann? Danke!:)

public List<user> GetList() {
List<user> ll = new List<user>();
string connString = "Data Source=127.0.0.1;Initial Catalog=DB11;Persist Security Info=True;User ID=sa;Password=123456;";
using (MySqlConnection conn = new MySqlConnection(connString)) {
using (MySqlCommand command = new MySqlCommand("select * from user", conn)) {
conn.Open();
using (MySqlDataReader rd = command.ExecuteReader()) {
while (rd.Read()) {
user u = new user();
u.Fname = rd["fname"].ToString();
u.Lname = rd["lname"].ToString();
ll.Add(u);
}
rd.Close();
}
conn.Close();
conn.Dispose();
return ll;
}
}
}
 
Hi und herzlich willkommen

Bitte setz doch Quellcode in entsprechende Code-Tags (bei C# heißt her csharp).

Zum Problem:
Du verlässt die Funktion bevor die usings abgearbeitet sind.
Nimm das return da raus und setz es ans Ende der Funktion. Zudem solltest du nicht explizit Dispose() aufrufen. Du nutzt richtigerweise using-Statements. Diese rufen am Ende implizit Dispose auf.
 
Hallo Nico,
Danke für den Hinweis.
Ich habe den return aus der Funktion raus genommen und um sicher zu sein die Funktion als void geschrieben. Im Debbuger wird der Close ausgeführt danach kann die Connection nicht mehr verwenden, da sie den Status Close hat. Nur auf dem MySql Server und mit dem Befehl SHOW FULL PROCESSLIST zeigt er weiterhin eine aktive Verbindung solang meine Anwendung noch offen ist.:confused:
 
Lösung gefunden. einfach den Connectionstring um "Pooling=false" erweitern dann geht es wie erwünscht.:D
 
Zurück