Frage

Was ist die richtige Möglichkeit, ein Profil zu schließen, nachdem eine Abfrage gegen eine MySQL -Datenbank aus einem Windows -Formular in C#ausgeführt wurde?

Ist ein einfaches offenes so nah genug wie dieses?

conn.Open();

//querycode

conn.Close():
War es hilfreich?

Lösung

Versuchen zu benutzen:

using(MySqlConnection conn = new MySqlConnection(connString))
{
    conn.Open();
} // conn is automatically closed and disposed at the end of the using block

Andere Tipps

Es ist in Ordnung, wie Sie es tun, Sie können auch das Verbindungsobjekt einwickeln using Block wie dieses:

using (var con = new MySqlConnection(/*connection string*/))
{
    con.Open();
    //do stuff
    // con.Close(); //don't need this it will be closed automatically* 
}

(*sehen)

Nein, der Code in Ihrer Frage ist nicht gut genug. Wenn Ihre Abfrage eine Ausnahme ausführt, werden Sie sie nicht rechtzeitig schließen () und sie bleibt hängen, bis der Müllsammler es bemerkt.

Sie müssen das Objekt in a einschließen using Blockieren Sie, wie von anderen oder bei einer bloßen Mindesthöhe in einer Versuch/schließlich Struktur.

Klassen, die Ressourcen verwenden, die Sie danach aufräumen müssen Identisch Schnittstelle. Dies bedeutet, dass es eine Funktion namens Dispose () bietet, die zur freien Ressourcen verwendet werden kann.

Für Einwegobjekte können Sie die verwenden Verwendung Aussage:

using ( SomeDisposableClass c = new SomeDisposableClass() ) {

    // ... your code here

} // c.Dispose() automatically called here, freeing up resources

Wenn die Klasse ordnungsgemäß codiert ist, sollte sie alle Ressourcen - sei es eine Datenbankverbindung, ein geöffnetes Dateihandle usw. - in der Funktion von Dispose () frei.

Dies bedeutet, dass die MySQL wahrscheinlich von der Datenbank in Dispose () abtrennt, sodass Sie wahrscheinlich nicht explizit C.CLOSE () aufrufen müssen - aber immer die Dokumentation überprüfen, um sicher zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top