Bonjour,
Des articles existent déjà, mais je ne trouve pas la réponse qui concerne mon cas.
J'ai une classe SQL Générique, qui permet de se connecter, d'effectuer des requête et d'en obtenir un résultat, quelle que soit la DB derrière (MySQL, Oracle, SQL Server, etc.).
J'utilise cette classe à la fois pour des applications Windows Form et à la fois pour des applications Web - ASP.NET.
J'aimerais qu'elle soit vraiment utilisée de la même manière, implémentée de la même manière sans devoir la changer.
Ma question :
Devrais-je garder une connexion ouverte à la base de données et la fermer sur commande dans l'application ?
Ou devrais-je ouvrir la connexion à chaque requête ExecuteQuery, NonQuery, Scalar, et la refermer à la fin de la requête, automatiquement ?
C'est un dilemne dans lequel je me trouve, et je ne sais pas quoi choisir.
Dans un premier cas, celui de garder la connexion ouverte, on aurait donc :
1) Instanciation de l'objet.
2) Initialisation des variables + Connexion (à la demande).
3) Exécution de requête.
(...)
7) Exécution de requête.
8) Fermeture Connexion.
(...)
x) Destruction de l'objet.
Dans un second cas, pour ouvrir une connexion automatiquement à la demande d'exécution de requête, nous aurions :
1) Instanciation de l'objet.
2) Execution de requête (Avec Initialisation des variables + Connexion + Execution de la requête + Fermeture de connexion).
3) Execution de requête (Avec Initialisation des variables + Connexion + Execution de la requête + Fermeture de connexion).
(...)
x) Destruction de l'objet.
Je suis conscient que d'ouvrir et fermer une connexion à chaque requête nécéssite beaucoup de ressources CPU.
Mais garder une connexion ouverte à une DB n'est pas gourmand justement pour cette DB et l'acceptation du nombre de connexion max ? Ou du support du nombre d'utilisateurs connectés ?
J'aimerais avoir votre avis sur la chose, pour terminer de créer ma classe.
Merci d'avance.
Partager