SqlCommand (Verwenden von Statement / Dispose Problem)

8

Nehmen Sie das folgende Beispiel ...

%Vor%

Aus meiner heutigen Forschung klingt das, als ob das grundsätzlich in Ordnung ist, aber der SqlCommand wird nicht entsorgt.

Frage - & gt; Welches der folgenden Beispiele ist der beste Weg, um damit umzugehen?

Beispiel 2 - Manuell entsorgen

%Vor%

Beispiel 3 - Automatische Entsorgung mit der Using-Anweisung

%Vor%

Beispiel 4 - Das gleiche wie in Beispiel 3, aber das Try / Catch ist innerhalb des Using - macht das einen Unterschied?

%Vor%

Beispiel 5 - Das gleiche wie in Beispiel 4, aber CommandText und cn sind in der Using-Anweisung angegeben - Welchen Vorteil hat das?

%Vor%

Beispiel 6 - Das gleiche wie in Beispiel 5, aber die Verbindung ist auf cn anstelle von cmd geöffnet. Ist es besser, die Verbindung auf cmd zu öffnen, wenn nur eine gespeicherte Prozedur ausgeführt werden soll?

%Vor%     
cw_dev 19.09.2012, 16:04
quelle

1 Antwort

7

Der Befehl DataAdapter.Fill wird die Verbindung selbst öffnen und schließen, sodass Sie cmd.Connection.Open() nicht benötigen. (Siehe Abschnitt Anmerkungen in Ссылка .)

Die Verwendung von Using für die SqlConnection hat den Effekt% code_% für Sie aufzurufen.

Die Variable .Close wird für die Garbage Collection verfügbar, sobald sie nicht mehr im Bereich ist (oder früher, wenn .NET feststellt, dass sie nicht mehr verwendet wird).

In Ihrem Beispiel 2 bin ich mir nicht sicher, ob es so eine gute Idee ist, den cmd zu entfernen, bevor der DataAdapter ihn benutzt hat.

    
Andrew Morton 19.09.2012, 18:18
quelle