using
Schließverhalten von SqlConnection im Anweisungsblock: Rückgabewerte und Ausnahmen
using
Wird der Anweisungsblock bei Rückgabe oder Ausnahme geschlossen SqlConnection
? Lassen Sie uns dieses Verhalten untersuchen:
Erste Frage:
Im folgenden Codeblock:
<code class="language-csharp">using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string storedProc = "GetData"; SqlCommand command = new SqlCommand(storedProc, connection); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID)); return (byte[])command.ExecuteScalar(); }</code>
Antwort: Ja, die Verbindung wird geschlossen.
Derusing
-Anweisungsblock stellt sicher, dass IDisposable
-Ressourcen (also SqlConnection
) auch im Falle einer vorzeitigen Rückkehr ordnungsgemäß freigegeben werden. Wenn der Code den using
-Block verlässt, wird automatisch die Dispose()
-Methode (die die Verbindung schließt) aufgerufen.
Zweite Frage:
In diesem Codeblock:
<code class="language-csharp">try { using (SqlConnection connection = new SqlConnection(connectionString)) { int employeeID = findEmployeeID(); connection.Open(); SqlCommand command = new SqlCommand("UpdateEmployeeTable", connection); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID)); command.CommandTimeout = 5; command.ExecuteNonQuery(); } } catch (Exception) { /*处理错误*/ }</code>
Antwort: Ja, die Verbindung wird weiterhin geschlossen.
Auch wenn im using
-Anweisungsblock eine Ausnahme ausgelöst wird, springt der Code sofort zum catch
-Block und beim Verlassen des using
-Anweisungsblocks wird SqlConnection
weiterhin freigegeben.
Zusammenfassung:
Unabhängig davon, ob der using
-Anweisungsblock über einen Rückgabewert oder eine Ausnahme beendet wird, wird SqlConnection
immer geschlossen, um die Ressourcenbereinigung sicherzustellen.
Das obige ist der detaillierte Inhalt vonWird SqlConnection bei Rückgabe oder Ausnahme in einem „Using'-Block geschlossen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!