Je fais mes méthodes d'accès à la base de données sur SQL Server comme celle-ci
using (SqlConnection con = new SqlConnection(//connection string)
{
using (SqlCommand cmd = new SqlCommand(storedProcname, con))
{
try{
con.open();
//data reader code
}
catch
{
}
}
}
Dois-je me fermer ou éliminer SQLCOMMAND ou utiliser la déclaration à l'aide de cela pour moi? Je ne veux tout simplement pas que la connexion suspendue merci merci
Le using
prendra en charge pour vous. Sous la hotte, SqlConnection.Dispose()
appelle la méthode SqlConnection.Close()
méthode et SqlCommand.Dispose()
appels SqlCommand.Close()
.
Comme arrière-plan supplémentaire, une instruction using
est le sucre syntaxique pour un try ... finally
qui dispose de l'objet IDisposable
dans le finally
.
De côté, vous pouvez rendre le code plus concis et lisible comme suit:
using (SqlConnection con = new SqlConnection(/*connection string*/))
using (SqlCommand cmd = new SqlCommand(storedProcname, con))
{
//...
}
Comme Phil a dit, l'utilisation de la clause s'en occupera pour vous. Lorsqu'il est compilé, il enveloppe la connexion Créer dans un essai. Enfin et place l'appel d'élimination de la connexion à l'intérieur de l'intérieur.
Pour plus d'informations, vous pouvez voir le à l'aide de l'article de déclaration de MSDN .
Oui, votre code fermera la connexion, cependant, qui signifie simultanément replacer sur le pool de connexion pour être vraiment fermé plus tard.
Si vous exécutez cet extrait de code, puis faites un sp_who et observe que votre connexion est toujours là, ce serait pourquoi.
Si vous avez absolument besoin de la connexion correctement fermée (un étui de bord pour être sûr), utilisez la méthode Clearallpools Méthode statique de THS SQLConnection
Using
_ keyword fermera automatiquement la connexion pour vous, de sorte que vous n'avez pas à vous soucier d'appeler connection.close()
à la fin à chaque fois.
quand la portée
using (SqlConnection con = new SqlConnection(//connection string)
{
}
la volonté sera terminée, la connexion sera automatiquement disposée par l'exécution. alors ne vous inquiétez pas
Je pense que "utiliser" n'était pas requis pour SQLCOMMAND. "Utiliser" pour SQLConnection aurait fait le travail pour vous seul. En fait, votre connexion est soumise au pool de connexion.