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
Libérer: 2025-01-15 16:57:44
original
540 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal