我收到以下错误;
“已经有一个与此命令关联的打开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");
}
}
.....
}
答案 0 :(得分:3)
您是否已实施SmartSqlReader以在其处置时关闭?常规数据读取器实现IDisposable接口并从Dispose方法调用Close。
如果你没有正确关闭它,它将使Command对象保持占用状态,直到垃圾收集器找到读者并清理它。
答案 1 :(得分:1)
添加reader.Close()
以关闭SmartSqlReader
答案 2 :(得分:1)
尝试以下方法:
using (SmartSqlReader reader = Db.CurrentDb.ExecuteReader(sp))
{
while (reader.Read())
{
a.blablabla += reader.GetInt32("BLA_BLA_BLA");
}
reader.Close();
}