SqlDataReader ne contenant rien => exception [Résolu][C# .net] - C#/.NET managed - Programmation
Marsh Posté le 16-07-2006 à 15:21:49
Roodie a écrit :
|
c'est quoi ça ?
Marsh Posté le 16-07-2006 à 15:33:54
Oops, "SelectAndReturn" est une fonction à moi tout seul
Voici le nouveau bout de code, simplifié :
Code :
|
Mici bien pour votre aide
Marsh Posté le 16-07-2006 à 15:42:30
enleve le connection.close() de la ligne 7, il est strictement inutile vu que tu englobes ton objet SqlConnection dans une clause using{}
Marsh Posté le 16-07-2006 à 15:51:39
Exact !
ça marche !
Apparemment le reader dépend de la connection...
Mici bien à toi
Marsh Posté le 16-07-2006 à 15:55:08
ReplyMarsh Posté le 16-07-2006 à 16:00:57
Attends, c'est pas fini
En fait, ma méthode SelectAndReturn ferme la connection puis retourne le SqlDataReader.
Mets après ça, on a vu que le SqlDataReader est mort.
Ya-t-il un moyen de pouvoir lui faire retourner un SqlDataReader valable, même si la connection fermée ?
Duplication du SqlDataReader ??
Mici si tu as une petite idée
Marsh Posté le 16-07-2006 à 16:11:26
Roodie a écrit : |
non, car sans connection, le reader ne peut rien faire. je cite la MSDN :
Citation : |
http://msdn2.microsoft.com/fr-fr/l [...] eader.aspx
ceci dit, en quoi ça te gène ? si c'est pour libérer la connexion le plus vite possible, alors tu stockes les données du reader dans une collection quelconque pour utilisation ultérieure et ensuite tu peux fermer la connexion
Marsh Posté le 16-07-2006 à 16:23:02
Ma méthode est propre et consistante avec toutes les autres méthodes que j'ai faite, alors je voulais la garder.
Sinon, tu parles de garder les données du reader qqpart. Veux-tu dire qu'il faut par exemple lire le reader, stocker ses données dans un dictionnaire, et retourner le dictionnaire ? Si c'est ça, c'est pas pratique effectivement
Merci bcp de ton aide!!!
Marsh Posté le 16-07-2006 à 16:45:25
Roodie a écrit : |
ben le mieux, c'est pas la solution que je t'ai donnée (qui est une solution batarde), mais c'est d'utiliser un DataSet, qui justement est fait pour ça. le DataSet est (pour simplifier) une base de données en mémoire. tu dois mapper via un SqlAdapter ta base dans le Dataset, puis ensuite tu peux fermer ta connexion et faire ce que tu veux de ton Dataset
http://msdn2.microsoft.com/en-us/l [...] taset.aspx
Marsh Posté le 16-07-2006 à 17:01:13
Ah ouais ! Très intéressant.
Je vais quand même garder la solution du SqlDataReader pour mon problème.
Et pis si un jour j'ai vraiment besoin de garder en mémoire mon SqlDataReader, j'utiliserai un DataSet !
Merci bcp pr ton aide !
Bonne fin de week-end à toi
Marsh Posté le 16-07-2006 à 17:06:18
idem
Marsh Posté le 17-07-2006 à 11:37:05
toi aussi t'as fermé la connexion avant d'utiliser le reader ?
Marsh Posté le 17-07-2006 à 11:40:30
Harkonnen a écrit : toi aussi t'as fermé la connexion avant d'utiliser le reader ? |
(nan, moi j'ai oublié d'allumer mon serveur ce matin en allant au boulot, et du coup je m'ennuie comme un rat mort )
Marsh Posté le 16-07-2006 à 15:10:20
Bonjour à tous
Je fais une requête toute simple qui ne retourne aucune ligne.
Le problème, c'est que reader.HasRows retourne une InvalidOperationException, comme si ça tentait de lire le premier enregistrement.
Faut-il utiliser qqch d'autre que reader.HasRows ??
Merci de votre aide
Message édité par Roodie le 16-07-2006 à 17:01:41