2010-05-31 5 views

Répondre

13
new SqlConnection(connectionString) 

crée une nouvelle instance SqlConnection contre la chaîne de connexion fournie.

SqlConnection cn = ... 

attribue à la nouvelle variable locale cn (scope à la déclaration using) qui contient l'objet de connexion construit.

using(...) 

Est-ce une déclaration using - il assure que la connexion est Dispose() -d à la fin, même si une exception est levée (dans ce cas Dispose() des moyens de le fermer/libérer à la piscine, etc.)

le code entier est essentiellement:

{ // this { } scope is to limit the "cn" 
    SqlConnection cn = new SqlConnection(connectionString); 
    try { // the body of the using block 
     ... 
    } finally { // dispose if not null 
     if(cn != null) { cn.Dispose(); } 
    } 
} 
2

vérifie que les SqlConnection est détruite à la fin de la « utilisant » la portée

4

Il dispose le SqlConnection après sa plus nécessaire. Dans ce cas, SqlConnection peut laisser des ressources non gérées et vous devez les nettoyer. SqlConnection implémente IDisposable, ce qui signifie que vous pouvez (devriez) appeler Dispose après avoir fini de travailler dessus.

Il est essentiellement un raccourci pour:

try { 
    SqlConnection cn = new SqlConnection(connectionString); 

    // whatever other code 
} 
finally { 
    if (cn != null) 
    { 
     cn.Dispose(); 
    } 
} 

Lorsque vous utilisez using, la portée de cn est étendue également à l'extérieur tryfinally).

Si vous voulez en savoir plus, vérifiez MSDN's article à ce sujet.

+3

Strictement parlant, la portée de cn est * en dehors de la 'try' ... –

+0

Merci, Marc. Edité pour le plus grand bien. –

1

L'instruction using peut être appliquée aux objets qui implémentent l'interface IDisposable. A la fin de la portée d'utilisation, Dispose est appelée sur l'objet.

0

Cela permet de libérer la connexion lorsque le contrôle quitte l'utilisation de() {..} clause.

La sortie peut être le résultat d'une exception, d'un retour de fonction, d'une rupture de boucle, d'une sortie goto ou d'une sortie normale de la portée. Très pratique.