11
votes

Dans une application C #, une connexion DB doit-elle être créée une fois ou chaque fois qu'une instruction SQL est exécutée?

dans une application C #, si un OLEDBConnection est créé une fois ou chaque fois qu'une instruction SQL est exécutée?

Je regarde le code C # écrit par quelqu'un d'autre. Chaque relevé SQL est précédé de la création d'un objet OLEDBConnection dont la chaîne de connexion pointe vers une base de données MDB.

est-il approprié de créer un objet OLEDBConnection à chaque fois, ou si l'objet doit-il être créé au début de l'application et utilisé à partir de là.


1 commentaires

Quel type d'application (formulaires, asp.net, etc.) et quel type d'architecture (SOA, etc.) utilisez-vous - selon David, cela dépendra.


5 Réponses :


4
votes

Cela dépend de la situation.

Si vous allez exécuter plusieurs déclarations d'affilée, vous ferez mieux de mieux performer-wise pour l'ouvrir une fois, exécutez toutes les déclarations, puis fermez-la,

Si vous vous demandez d'ouvrir la connexion lorsque le programme commence et de le garder ouvert jusqu'à ce que le programme se termine quelles que soient ce qui se passe, alors non. Fermez-le dès que vous en avez fini. Il vaut mieux ne pas laisser une connexion suspendue ouverte.

Un autre facteur que les gens ne semblent jamais penser sont le programmeur de maintenance qui se déroule plus tard, qui doit suivre le code et garder une trace de l'ouverture de la connexion et quand il se ferme. Dites, par exemple, que vous avez un programme accessible à une base de données, puis se branche dans plusieurs autres fonctions, chacune peut avoir besoin de la connexion. Suivi de ce genre de choses dans le code est un cauchemar.

Ensuite, ce facteur est secondaire au fonctionnement et aux performances appropriés, mais toujours à prendre en compte dans une application complexe.

Le facteur principal est de savoir comment cela affectera la performance par rapport au cose de maintenir une connexion ouverte. Vous devez décider que dans chaque situation.


0 commentaires

0
votes

Vous devez ouvrir une connexion à chaque fois que vous avez besoin de quelque chose de la DB et fermez-la ensuite. Permettez au pool de connexion pour décider lorsqu'il ferme physiquement la connexion.


0 commentaires

7
votes

Selon Meilleures pratiques pour utiliser Ado.net : < / p>

Les applications haute performance gardent Connexions à la source de données utilisée pour une quantité minimale de temps, aussi bien comme profiter de la performance Améliorer la technologie telle que Connexion Pooling ...


0 commentaires

7
votes

Assumer la mise en commun de la connexion est disponible pour votre base de données, ce qui est probablement que vous souhaiterez ouvrir et fermer une connexion pour chaque appel à votre base de données. Cela vous permet d'utiliser uniquement la ressource finie d'une connexion de base de données uniquement lorsque vous en avez besoin, puis de le renvoyer au pool pour d'autres appelants à utiliser dès que vous avez fini de faire appel à l'appel. Si vous détenez sur la connexion, vous passerez prochainement de la ressource finie, qui étant les connexions totales disponibles à la base de données, et entravent donc sévèrement l'évolutivité et les performances de votre application.

J'utilise habituellement une déclaration à l'aide de La connexion est proche après utilisation - voir ci-dessous: xxx

profiter!


0 commentaires

1
votes

Votre connexion à la base de données ne doit être ouverte que lorsque vous effectuez une activité directement sur la base de données. Maintenant une connexion ouverte à la base de données pendant que votre application effectue une autre activité peut bloquer d'autres utilisateurs d'accéder à la base de données une fois que votre pool de connexion atteint sa limite.

Si vous avez une fonction intensive de la CPU à effectuer sur le PC client, vous devez effectuer cette tâche une fois que vous avez fermé votre connexion afin de ne pas attacher la connexion.

Mais si vous avez une série de fonctions de base de données à effectuer, les performances de votre client peuvent être améliorées en les faisant ensemble dans une seule connexion ouverte.


0 commentaires