ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
468
468
EMPFEHLEN
-
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.Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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.
-
Sieht mir eher nach einem Bug im MySQL Connector aus. Hast du da mal im Forum, Hilfe, usw. gesucht?
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
ja, ich habe überall gesucht, fand aber nichts was helfen kann. Ärgerlich!!
-
Lösung gefunden. einfach den Connectionstring um "Pooling=false" erweitern dann geht es wie erwünscht.
Ähnliche Themen
-
Popup soll geschlossen werden wenn das Hauptfenster geschlossen wird.
Von LiebHabSchafi im Forum PHPAntworten: 3Letzter Beitrag: 06.10.05, 23:21 -
[MySQL] Server: Verbindung über 'localhost' und die öffentliche ip geht - URL nicht
Von the snake II im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 22.08.05, 16:03 -
Java Prozess wird nicht geschlossen
Von Acki im Forum JavaAntworten: 9Letzter Beitrag: 13.04.05, 14:06 -
MySQL - Verbindung wird nicht aufgebaut
Von flasherMX im Forum .NET ArchivAntworten: 1Letzter Beitrag: 10.02.05, 14:09 -
Verbindung zum www, Server wird aber nicht gefunden
Von Sturmi im Forum Internet, DSL & FlatrateAntworten: 2Letzter Beitrag: 03.12.04, 11:46





Zitieren

Login




