Heim >Backend-Entwicklung >C++ >Wird SqlConnection bei Rückgabe oder Ausnahme in einem „Using'-Block geschlossen?

Wird SqlConnection bei Rückgabe oder Ausnahme in einem „Using'-Block geschlossen?

DDD
DDDOriginal
2025-01-15 16:57:44542Durchsuche

Does SqlConnection Close in a

using Schließverhalten von SqlConnection im Anweisungsblock: Rückgabewerte und Ausnahmen

usingWird 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.

Der

using-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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn