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"); 
                        }
                    }


.....

}
Était-ce utile?

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
scroll top