Maison >développement back-end >C++ >SqlConnection se ferme-t-il dans un bloc 'Using' en cas de retour ou d'exception ?

SqlConnection se ferme-t-il dans un bloc 'Using' en cas de retour ou d'exception ?

DDD
DDDoriginal
2025-01-15 16:57:44542parcourir

Does SqlConnection Close in a

using Comportement de fermeture de SqlConnection dans le bloc d'instructions : valeurs de retour et exceptions

usingLe bloc de relevés sera-t-il fermé SqlConnection en cas de retour ou d'exception ? Explorons ce comportement :

Première question :

Dans le bloc de code suivant :

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

Réponse : Oui, la connexion sera fermée.

Le bloc d'instructions

using garantit que les ressources IDisposable (c'est-à-dire SqlConnection) sont correctement libérées même en cas de retour anticipé. Lorsque le code sort du bloc using, la méthode Dispose() (qui ferme la connexion) est automatiquement appelée.

Deuxième question :

Dans ce bloc de code :

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

Réponse : Oui, la connexion sera toujours fermée.

Même si une exception est levée dans le bloc d'instructions using, le code passera immédiatement au bloc catch, et à la sortie du bloc d'instructions using, SqlConnection sera toujours libéré.

Résumé :

Que le bloc d'instructions using se termine via une valeur de retour ou une exception, SqlConnection sera toujours fermé pour assurer le nettoyage des ressources.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn