Dupliqué possible: strong>
utilisera un bloc Fermer une connexion de base de données? P >est
db.close () code> inutile dans ce qui suit? p>
xxx pré> blockQquote>
5 Réponses :
Pour ce que je sais, lorsque Dispose () code> est appelé,
fermeture () code> est effectué automatiquement.
Donc db.close (); code> n'est pas nécessaire ici. P>
à la brace de fermeture Le Je pense que dans le Dispose () code> est appelé. P>
dbconnection code> Le
Dispose méthode code> vérifiera également si la connexion est fermée.
Donc non, ce n'est probablement pas nécessaire, mais je pense personnellement que c'est une bonne pratique et améliore la lisibilité et cela n'affecte pas les performances, car le
fermer code> sera appelé d'une manière ou d'une autre. P>
Y a-t-il besoin de fermer une DBConnection si une clause utilisant est utilisée? P>
Non, il n'est pas nécessaire de fermer une DBConnection si une clause utilisant est utilisée? p>
et p>
Oui, il est inutile ici car lorsque la portée de
en utilisant extrémités, la connexion disposera de la signification de fermeture et de libération de toute la mémoire. P>
Etant donné que
dbconnection code> Implements
Idisposable code> Interface, Fermer fonctionne dans le
Dispose code> méthode de
dbconnection code >. p>
mais si certaines lignes sont après la ligne de fermeture, il est utile p>
xxx pré> mais ici, il est utile p>
xxx Dans ce cas, vous pouvez faire P>
using (DbConnection db = GetDbConnection()) { // do data-access stuff // ... } // Some more code which was previously inside using section.
+1 Pour une conception belle pour fermer manuellement au cas où plus de code n'utilise pas la connexion. Cependant, dans ce cas, il est préférable de ne pas inclure ce code dans l'utilisation du bloc.
@Aphelion: Oui, le code ci-dessous ne doit sûrement pas être dans le bloc
Pourquoi un autre code ci-dessous DB.Close () est utile?
@Cuongle: peut être un code qui fonctionne sur les valeurs extraites après avoir tiré une certaine requête à travers cette connexion.
@Nikhilagawal bon point. Dans ce cas, je recommanderais de stocker les résultats en dehors du en utilisant la portée code>.
Dans ce cas, il lancera une exception parce que la connexion est réellement proche, toujours confuse
@Cuongle: Que se passe-t-il si ces résultats sont récupérés avant la fermeture de la connexion.
Si ces résultats sont récupérés avant la connexion, ce n'est pas le cas "Plus de code ci-dessous DB.Close () est utile".
@Cuongle: Ici, plus de code n'est pas utile. Si un code est après db.close (); code> puis la fermeture manuellement est utile.
code extrait de la mise en oeuvre d'élimination du Le SQLConnection code> (dérivé de
dbconnection code>) Classe:
en utilisant < / Code> Le mot-clé utilise l'interface
iDisposable code>. La méthode ci-dessus est la méthode mise en œuvre. Il fermera la connexion. P> p>
juste pour être sûr d'avoir vérifié le code :) Il s'agit de la mise en œuvre de sqlconnection fort> qui hérite de
Je me demandais ici, à l'aide d'appels d'instruction code>
Disposez () code> ou
Dispose (élimination de bool) code>
@Aphelion: Pls pourriez-vous également répondre à ce sujet?
@Cuongle il appellera Dispose () code> qui est public. Sa mise en œuvre appellera alors
Dispose (true) code>.
Non, en utilisant dans la mise en oeuvre de la méthode de DBConnection, appelle db.close (). C'est inutile
Voir cette excellente explication de Idisposable: Stackoverflow.com/a/538238/110933