2011-03-28 1 views
1

est-il préférable d'ouvrir la connexion à la base de données -pour fermer la connexion à la base de données après utilisation ou non?

faire toute querys ... mise à jour .... supprimer -

et après que je l'utilise pour fermer cette connexion

ou

ouvrir la connexion lorsque le programme charge -

et fermer lorsque le programme se ferme?

merci à l'avance

+0

La deuxième approche est l'un des plus grands anti-modèles. S'il vous plaît ne pas – Marcote

Répondre

6

En général, vous Fermer (Dispose) le plus tôt possible dans votre code. Avec un bloc try/finally ou using. Ce qui se passe réellement dépend des paramètres de ConnectionPool pour votre application.

Fondamentalement, la présence de ConnectionPool signifie que vous n'avez plus à vous soucier de l'utilisation des connexions (combien, combien de temps à maintenir), il devient une configuration externe. BTW: À l'exception de l'infrastructure WinCE, légèrement different rules là.

2

Fermez toujours la connexion ADO.NET lorsque vous avez terminé. La raison en est que les connexions sont regroupées derrière l'infrastructure ado.NET, donc même si l'ouverture d'une connexion prend du temps, en la fermant, vous la libérez dans le pool afin que l'autre partie de l'application puisse avoir une connexion plus rapide. Une certaine exception à cette règle peut être faite avec une base de données intégrée, mais nous devons regarder le cas unique.

2

Vous devez toujours fermer immédiatement vos connexions en utilisant les blocs using.

1

La fermeture d'une connexion n'est pas la même que la mise au rebut. Une connexion fermée peut être réutilisée par le pool de connexions en fonction d'une recherche de dictionnaire sur la chaîne de connexion (votre chaîne de connexion doit être identique pour utiliser le pooling, mais cette fonctionnalité est transparente). D'un autre côté, si vous disposez ou utilisez USING, l'objet de connexion sera détruit et ne pourra pas être réutilisé.

Si vous prévoyez de réouvrir la connexion peu de temps après, il serait plus efficace d'utiliser Close.

+0

Juste pour clarifier, appelant Dispose ne supprime pas la connexion du pool de connexions. Et je resterais à l'écart du problème de performances de Close vs a Using. –

+0

Voici une citation d'un développeur (http://social.msdn.microsoft.com/profile/david%20m.%20kean/) pour l'équipe Base Class Library de Microsoft (6 mai 2010): L'exception est SqlConnection, et al, Close ne signifie pas la même chose que Dispose. Fermer ferme la connexion, mais vous permet de réutiliser ultérieurement la même instance de connexion en appelant Ouvrir. Dispose ferme la connexion, mais ne vous permet pas de réutiliser la même instance de connexion. http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/b3587ccc-74e0-4575-9b60-7c529d2607ac – Bengie

+0

Lisez la section "Ajouter des connexions" ici: http://msdn.microsoft.com /en-us/library/8xx3tyca.aspx –

Questions connexes