Frage

Ich erhalte die folgenden Fehler;

„Es gibt bereits eine offene Datareader mit diesem Befehl zugeordnet, der zuerst geschlossen werden muss.“

ist es, weil ich den Leser in foreach-Schleife verwendet? oder was das Problem sein könnte? Grüße BK

foreach( Apple a in listApple )
{


....
                   using (SmartSqlReader reader = Db.CurrentDb.ExecuteReader(sp))
                    {
                        while (reader.Read())
                        {
                            a.blablabla += reader.GetInt32("BLA_BLA_BLA"); 
                        }
                    }


.....

}
War es hilfreich?

Lösung

Versuchen Sie Folgendes:

using (SmartSqlReader reader = Db.CurrentDb.ExecuteReader(sp))
 {
  while (reader.Read())
  {
   a.blablabla += reader.GetInt32("BLA_BLA_BLA"); 
  }
  reader.Close();
 }

Andere Tipps

Haben Sie die SmartSqlReader implemeneted zu schließen, wenn es entsorgt wird? Die regelmäßigen Daten Leser die IDisposable-Schnittstelle implementieren und rufen Schließen von der Dispose-Methode.

Wenn Sie schließen es nicht richtig wird es das Command-Objekt, bis der Garbage Collector besetzt hält die Leser finden und reinigen Sie es auf.

Fügen Sie reader.Close() die SmartSqlReader schließen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top