您的位置:首页 > 其它

阅读器关闭时尝试调用 FieldCount 无效异常

2012-03-16 15:29 309 查看
阅读器关闭时尝试调用+FieldCount+无效

RepeaterContactList.DataSource = GetList();

RepeaterContactList.DataBind();
在DataBind()的时候抛出"阅读器关闭时尝试调用 FieldCount 无效"的异常;
看了下代码

public DbDataReader GetList()
{
using (DbDataReader dr = dbHelper.ExecuteReader(CommandType.Text, sql, parameters))
{
if (dr.HasRows)
{
return dr;
}
return null;
}
}
原因是使用了Using语句,在return之后,Using就把DbDataReader给关闭了,而DbDataReader 是需要保持连接使用的,所以这样引用会抛出异常.
解决方法很简单,可以用DataTable将DbDataReader dr给Load()到内存使用,也可以将DbDataReader dr给Load()到实体类中使用.
修改上面的方法,改用DataTable之后正常了:

public DataTable GetList()
{
DataTable dt = new DataTable();
using (DbDataReader dr = dbHelper.ExecuteReader(CommandType.Text, sql, parameters))
{
if (dr.HasRows)
{
dt.Load(dr);
return dt;
}
return null;
}
}
转自:http://hi.baidu.com/aspxjsp/blog/item/d2d3bd3607b33455241f14c7.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐