Je me demandais si c'était une bonne idée de maintenir une connexion à la base de données (System.Data.SqlClient.SqlConnection()) ouverte ou s'il est recommandé de fermer la connexion après l'avoir utilisée et de l'ouvrir à nouveau ? (Remarque: Mon application fonctionnera en continu pendant plusieurs jours/mois). Je suis un peu poussé à le laisser ouvert. Quelle est la meilleure solution?C# connexion à la base de données
Répondre
ressources Vous absolument ouvrir vos connexions le plus tard possible, et les fermer le plus rapidement possible. Cependant, vous devez non seulement les fermer lorsque vous avez terminé, mais vous devez les fermer même entre des commandes étroitement liées, s'il y a un autre code s'exécutant entre les deux. En fait, laissez-moi le dire comme ceci: Fermez vos objets ADO.NET Connection aussi rapidement et fréquemment que vous le pouvez. (c'est-à-dire, ne faites pas des choses évidemment stupides pour fermer des connexions qui ne devraient évidemment pas être fermées)
Par défaut, le fournisseur ADO.NET pour SQL Server (ainsi que la plupart des autres fournisseurs importants) fournit un pool de connexions. . Cela gérera réellement la création et la destruction de ces connexions pour vous - mais seulement si vous les fermez lorsque vous avez terminé.
Si vous enveloppez la création et l'utilisation de vos objets de connexion dans using
blocs, cela est facile à faire ...
using(SqlConnection conn = new SqlConnection(...))
{
///Open and use the connection
} //the 'using' causes it to automatically be closed.
En général, jetez-le quand vous en avez fini avec, et ne vous inquiétez pas. Par défaut, ADO.NET implémente connection pooling, donc la connexion est maintenue ouverte dans les coulisses afin de vous épargner la pénalité de performance d'ouvrir de nouvelles connexions tout le temps.
Une autre raison de fermer les connexions dans votre code - si vous perdez la connectivité à votre serveur de base de données lorsque vous n'utilisez pas la connexion, vous ne rencontrerez pas d'erreur, ce qui pourrait arriver.
Ouvrez la connexion si vous avez besoin, ne devriez pas perdre ;-)
- 1. Nouvelle connexion à la base de données distante en C#
- 2. Connexion à la base de données SQL Server C# -WinForms
- 3. Connexion à la base de données PHPBB
- 4. connexion à la base de données asp.net
- 5. Connexion php à la base de données
- 6. Connexion locale à la base de données
- 7. Connexion à la base de données PHP
- 8. Connexion à la base de données dynamique
- 9. Échec de la connexion à la base de données
- 10. Echec de la connexion à la base de données Oracle
- 11. Aide à la connexion à la base de données
- 12. Connexion à une base de données Oracle en C# .Net
- 13. Reconnexion automatique de la connexion à la base de données
- 14. Problème de connexion à la base de données
- 15. Problèmes de connexion à la base de données Visual FoxxPro
- 16. connexion à la base de données à distance
- 17. Comment vérifier la connexion à la base de données rapidement?
- 18. besoin d'aide avec la connexion à la base de données
- 19. Connexion à une base de données MySQL
- 20. Connexion de la base de données à partir de l'applet
- 21. Pourquoi toujours fermer la base de données Connexion à la base de données?
- 22. Connexion à la base de données, vérifier les données, page de connexion
- 23. ANDROID: Connexion à la base de données, vérifier les données, page de connexion
- 24. Problème de connexion à la base de données mysql distante
- 25. SQL Server - Erreur de connexion à la base de données
- 26. Pool de connexion à la base de données JBoss
- 27. Problème de connexion à la base de données MySQL externe
- 28. Délai de connexion à la base de données
- 29. Classe de connexion à la base de données PHP
- 30. Assistant de connexion à la base de données SOAP UI
Je trouve le dernier exemple de code avec le bloc 'using' de prêter à confusion:' using' ne sera pas '.Open()', ni '.Close()' une connexion, ces opérations doivent encore être effectuées manuellement. – stakx
L'instruction 'using' provoque la fermeture automatique de la connexion. Il n'est pas nécessaire d'appeler explicitement 'Close()' lorsque vous appelez 'Dispose()', ce que fait la construction 'using'. –