与此命令相关的DataReader,必须先关闭(DataReader associated with

2019-10-18 00:52发布

我收到以下错误;

“已经有与此命令必须先关闭相关联的打开的DataReader。”

是不是因为我已经使用在foreach循环的读者? 或者问题可能是什么? 问候BK

foreach( Apple a in listApple )
{


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


.....

}

Answer 1:

尝试以下方法:

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


Answer 2:

你有没有implemeneted的SmartSqlReader当它设置为关闭? 常规数据读取器实现IDisposable接口,并呼吁关闭从Dispose方法。

如果不正确地关闭它,它会继续占据,直到垃圾回收器会发现阅读器和清理Command对象。



Answer 3:

加入reader.Close()关闭SmartSqlReader



文章来源: DataReader associated with this Command which must be closed first