Ne DataReader.La méthode Close() ferme la connexion de l'objet lors de l'utilisation de Microsoft Blocs d'Application pour l'Accès aux Données?
Je suis l'examen d'une demande qui utilise Microsoft Blocs d'Application pour l'Accès aux Données pour interagir avec la base de données. L'application appelle la fonction et passer une requête en elle. La fonction crée un objet DataReader en utilisant les Données d'Accès de l'application bloque (pour la requête donnée) et retourne le DataReader pour l'appelant.
La fermeture de l'application objet DataReader quand il est fait. La question que je me pose est de savoir si la fermeture de l'objet DataReader ferme automatiquement la connexion sous-jacente de l'objet ou pas. Il n'est pas clair pour moi si l'Application d'Accès aux Données du Bloc s'ouvre l'objet de commande avec le "CommandBehavior.CloseConnection" pavillon.
Questions:
- Lorsque la méthode Close() est appelée sur un objet DataReader, est-il aussi fermer la connexion sous-jacente de l'objet (l'objet DataReader est créé à l'aide de Microsoft Blocs d'Application de Base de données.ExecuteReader() la méthode
- Si non, quelle est la méthode recommandée pour s'assurer que la connexion est libérée après que nous avons fini avec le lecteur de données?
Merci d'avance
OriginalL'auteur Jacob Sebastian | 2011-06-29
Vous devez vous connecter pour publier un commentaire.
http://msdn.microsoft.com/en-us/library/system.data.commandbehavior.aspx
CloseConnection: Lorsque la commande est exécutée, l'objet de Connexion est fermée lorsque les associés objet DataReader est fermé.
CommandBehaviour.Default
signifieCommandBehaviour.CloseConnection
. Je suppose que non, alors la réponse à l'OP de la question était: non, par défaut, il ne ferme pas la connexion.OriginalL'auteur Miguel Angel Utiel Peñaranda
Miguel Angel Utiel la réponse est juste, si vous utilisez "CommandBehavior.CloseConnection", la connexion se ferme après reader fermé. juste comme ça:
si votre ExecuteReader() sans paramètre,tout comme
lire:http://msdn.microsoft.com/en-us/library/system.data.commandbehavior.aspx
OriginalL'auteur Hui Tan
C'est toujours une bonne habitude de fermer et de vous débarrasser de vos objets manuellement. Le GC éventuellement les récupérer, mais vous ne savez pas quand, et quand on travaille avec une base de données que vous ne voulez pas ouvrir les connexions traîner manger ressources.
Donc, pour répondre à vos questions:
1) Oui, DataReader.Close() ferme la connexion. Ceci est pertinent pour traiter avec n'importe quel objet connecté.
consulter également: http://msdn.microsoft.com/en-us/magazine/cc188705.aspx
2) je recommande de mettre le lien dans une instruction d'utilisation:
**elles sont effectuées en utilisant régulièrement SQLClient objets, mais ils fonctionnent avec tous les objets qui héritent du Système.Les données.Commun.DbCommant, Système.Les données.Commun.DbConnection etc. classes.
Jetez sera appelée à la fin de l'aide, qui feront appel à proximité, mais j'ai tout de même implicitement appel.
ou, vous pouvez le mettre dans une instruction try/catch:
Pas de problème pour le commentaire. Microsoft a fait cette fonctionnalité avec tous leurs datareader objets. Si vous regardez: msdn.microsoft.com/en-us/magazine/cc188705.aspx vous verrez que lorsque le lecteur est fermé, la connexion sous-jacente est fermée aussi. Qui traite de la DAAB.
si l'on aime à appeler explicitement c'personnellement, je préfère le deuxième exemple
OriginalL'auteur Ryan Ternier