tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
468
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mimoun mimoun ist offline Grünschnabel
    Registriert seit
    Apr 2010
    Beiträge
    4
    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;
    }
    }
    }
     

  2. #2
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.883
    Blog-Einträge
    34
    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 Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  3. #3
    mimoun mimoun ist offline Grünschnabel
    Registriert seit
    Apr 2010
    Beiträge
    4
    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.
     

  4. #4
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.883
    Blog-Einträge
    34
    Sieht mir eher nach einem Bug im MySQL Connector aus. Hast du da mal im Forum, Hilfe, usw. gesucht?
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  5. #5
    mimoun mimoun ist offline Grünschnabel
    Registriert seit
    Apr 2010
    Beiträge
    4
    ja, ich habe überall gesucht, fand aber nichts was helfen kann. Ärgerlich!!
     

  6. #6
    mimoun mimoun ist offline Grünschnabel
    Registriert seit
    Apr 2010
    Beiträge
    4
    Lösung gefunden. einfach den Connectionstring um "Pooling=false" erweitern dann geht es wie erwünscht.
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 06.10.05, 23:21
  2. [MySQL] Server: Verbindung über 'localhost' und die öffentliche ip geht - URL nicht
    Von the snake II im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 22.08.05, 16:03
  3. Java Prozess wird nicht geschlossen
    Von Acki im Forum Java
    Antworten: 9
    Letzter Beitrag: 13.04.05, 14:06
  4. MySQL - Verbindung wird nicht aufgebaut
    Von flasherMX im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 10.02.05, 14:09
  5. Verbindung zum www, Server wird aber nicht gefunden
    Von Sturmi im Forum Internet, DSL & Flatrate
    Antworten: 2
    Letzter Beitrag: 03.12.04, 11:46

Stichworte