2010-11-29 1 views
1

Grundsätzlich, wenn ich tue folgendes:C#/Informix: Muss ich explizit Close auf meiner DB-Verbindung aufrufen, wenn es sich um eine using-Anweisung handelt?

using (IfxConnection connection = ConnectionManager.GetConnection()) 
{ 
    connection.Open(); 
    ... 
    if (connection != null) connection.Close(); //Is this necessary? 
} 

Hinweis: IfxConnection ist ein IBM-Klasse, die von DBConnection erbt.

Ich weiß, es wird nicht schaden, es da drin zu lassen, aber ich bin an einem Punkt, wo ich aufräume und meinen Code so effizient wie möglich mache, also alles zu entfernen, was "extra" wäre, wäre nett. :)

Antwort

3

Wenn IBM bereinigt und ruft Close() in seiner IfxConnection Klasse auf Dispose(), dann ist es sicher, die letzte Zeile zu entfernen.

Nach der docs, ja, sie tun.

Grundsätzlich würden Sie zwei Möglichkeiten:

  • gehen mit using() oder
  • using() verlieren und gehen Sie für eine try{ ... } finally { if (connectionIsOpen) connection.Close()}

Mit beiden von ihnen unnötig ist.

Ich würde für die Verwendung using() wählen. (Wortspiel beabsichtigt) ;-)

Nur nicht wiederverwenden - argh, wieder ;-) - die Verbindung, die bereits entsorgt wird - aber das würdest du sowieso nicht tun, oder? :-)

1

Der Aufruf Dispose schließt die Verbindung für Sie. Seien Sie jedoch vorsichtig, da dadurch auch die Verbindungszeichenfolge gelöscht wird.

Bitte sehen IfxConnection für diese Tipps:

  • Entsorgen Aufruf auf einem IfxConnection Objekt unterscheidet sich von Aufruf schließen. Beispielsweise löscht Dispose die Verbindungszeichenfolge, während Schließen dies nicht tut.

  • [In Bezug auf die Close Methode] Schließt die Verbindung zur Datenbank. Dies ist die bevorzugte Methode, um eine offene Verbindung zu schließen.

Verwandte Themen