2009-12-03 8 views

Répondre

6

Sauf si vous avez votre emballage SqlConnection dans un communiqué using, vous êtes toujours responsable de la fermeture et de la disposition de la connexion (comme toute autre exception).

Vous pouvez également utiliser un try/catch/finally bloc:

try 
{ 
    // Create and execute your SqlCommand here 
} 
catch(SqlException ex) 
{ 
    // Catch the timeout 
} 
finally 
{ 
    // Close and Dispose the SqlConnection you're using 
} 

Mais using est beaucoup plus propre et élimine automatiquement:

using(SqlConnection conn = new SqlConnection()) 
{ 
    // Do your work here. 
    // The SqlConnection will be closed and disposed at the end of the block. 
} 
5

Non, vous devez toujours nettoyer après vous-même. L'utilisation d'un bloc à l'aide entraînera à être mis au rebut si:

using (SqlConnection connection = new SqlConnection(...)) 
{ 
    // ... 
} 
+0

Donc, il n'est même pas fermé? –

+0

Non ce n'est pas. (pourquoi ai-je besoin de 15 caractères!) – JonH

+0

Je ne suis pas sûr à 100%, mais appeler 'SqlConnection.Dispose()' appelle aussi 'SqlConnection.Close()'. Donc, le bloc utilisant est efficace à 100%. –

0

Tout cela devrait être enroulé autour d'une clause finally après l'exception afin que vous Fermez votre connexion et nettoyez toute ressource objet SQL. Regardez try/catch/finally et mettez le code de nettoyage dans votre déclaration finale.