DataReader associé à cette commande qui doit être fermé en premier
-
05-07-2019 - |
Question
Je reçois l'erreur suivante;
"Il existe déjà un DataReader ouvert associé à cette commande qui doit être fermé en premier."
est-ce parce que j'ai utilisé le lecteur dans chaque boucle? ou quel pourrait être le problème? Cordialement BK
foreach( Apple a in listApple )
{
....
using (SmartSqlReader reader = Db.CurrentDb.ExecuteReader(sp))
{
while (reader.Read())
{
a.blablabla += reader.GetInt32("BLA_BLA_BLA");
}
}
.....
}
La solution
Essayez ce qui suit:
using (SmartSqlReader reader = Db.CurrentDb.ExecuteReader(sp))
{
while (reader.Read())
{
a.blablabla += reader.GetInt32("BLA_BLA_BLA");
}
reader.Close();
}
Autres conseils
Avez-vous implémenté SmartSqlReader pour qu'il se ferme lorsqu'il est éliminé? Les lecteurs de données standard implémentent l’interface IDisposable et appellent Close depuis la méthode Dispose.
Si vous ne le fermez pas correctement, l'objet Commande sera occupé jusqu'à ce que le ramasse-miettes trouve le lecteur et le nettoie.
Ajoutez reader.Close ()
pour fermer le SmartSqlReader
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow