Pourquoi toujours fermer la connexion à la Base?
En cas de connexion à une base de données consomme beaucoup de ressources, pourquoi une connexion de base de données toujours être fermé dans votre demande si vous avez de l'ouvrir à nouveau? Puis-je simplement faire ce lien disponible dans le monde entier tout au long de mon application, de sorte que les autres classes et les méthodes de la réutiliser?
Par exemple (en pseudo-code):
public class PopulateGridViews()
{
public SqlConnection conn = new SqlConnection(@"Database:DATABASE");
conn.Open();
void PopulateGrid1()
{
SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE1");
cmd.Connection = conn;
cmd.ExecuteNonQuery();
cmd.Dispose();
//Populate Grid1
}
void PopulateGrid2()
{
SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE2");
cmd.Connection = conn;
cmd.ExecuteNonQuery();
cmd.Dispose();
//Populate Grid2
}
}
- Je vous suggère la lecture de Connexion au Serveur SQL de mise en commun (ADO.NET).
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas laisser les connexions ouvertes.
Vous devez:
La connexion en elle-même est retourné au pool de connexion. Les connexions sont limitées et relativement coûteux en ressources. Toute nouvelle connexion vous établir qui a exactement la même chaîne de connexion seront en mesure de réutiliser la connexion de la piscine.
Vous doit envelopper tout ce qui implémente
IDisposable
dans unusing
bloc d'instructions:Parce que (certains) des bases de données de maintenir ouvert une connexion jusqu'à ce que racontée par l'application appelante pour le fermer. Si vous obtenez des centaines d'appels à une base de données alors qu'il est assis là, avec 100 connexions ouvertes monopoliser les ressources. Il n'est pas rare d'avoir des milliers ou des centaines de milliers d'appels à une base de données dans une longue application, et tôt ou tard, la DB de rendement va tuer les performances de l'application.
C'est vraiment juste du bon sens. Si vous avez une raison valable de le garder ouvert, puis le faire. Si pas le cas, fermez-la dès que vous en avez terminé avec elle. Mais c'est mieux d'être dans la bonne habitude de fermer les connexions de sorte que vous ne vous contentez pas de les laisser ouverts lorsque vous ne comptez pas. C'est une bonne habitude comme wearingyour de la ceinture de sécurité ou la fermeture de la porte du réfrigérateur lorsque vous êtes de ne pas obtenir de la nourriture.
Cet article précise bien (même si il est un peu dépassé):
http://www.bewebmaster.com/84.php
Il est clair que si vous ne pas fermer la connexion à ce qu'elle serait de consommer vos ressources en permanence et qui aurait un impact global sur votre apllication et il peut également ne pas être ajoutée ou retournés à la piscine.