已有打开的与此连接相关联的 DataReader,必须首先将它关闭

wlboy2000 2006-01-17 09:47:23
如果把用rs.Close();上面的错误就会消失 但循环后就会出现DataReader已关闭
请问我这个rs.Close();加在哪? 或者我怎么弄这个循环
高手顺便帮我看看代码有没有错误 我第一次用DataTable绑定DataGrid


private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
DataTable table=new DataTable();
table.Columns.Add("ID");
table.Columns.Add("类别名称");
table.Columns.Add("所属类别");
SqlConnection conn=ManageFunction.Create();
conn.Open();
SqlCommand cmd=new SqlCommand("select * from pang_book_leibie where leibieid=0",conn);
SqlDataReader rs=cmd.ExecuteReader();
while(rs.Read())
{
DataRow dr=table.NewRow();
dr["ID"]=rs["id"].ToString();
dr["类别名称"]=rs["bookname"].ToString();
dr["所属类别"]="大类";
string leibieid=rs["leibieid"].ToString();
//rs.Close();
SqlCommand cmd2=new SqlCommand("select * from pang_book_leibie where leibieid="+leibieid,conn);
SqlDataReader rs2=cmd2.ExecuteReader();
table.Rows.Add(dr);


while(rs2.Read())
{
dr=table.NewRow();
dr["ID"]=rs2["id"].ToString();
dr["类别名称"]=rs2["bookname"].ToString();
dr["所属类别"]="小类";
table.Rows.Add(dr);

}
rs2.Close();
cmd2.Dispose();

}
this.MyDataGrid.DataSource=table;
this.MyDataGrid.DataBind();
}

}

...全文
144 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlboy2000 2006-01-17
  • 打赏
  • 举报
回复
在线等
wlboy2000 2006-01-17
  • 打赏
  • 举报
回复
我之所以把rs.Close();加在前面就是因为提示SQLDATAREADER正在使用~~
现在解决了 谢谢几位
oldmoon 2006-01-17
  • 打赏
  • 举报
回复
楼主,你的while(rs.Read)是循环啊,你一关闭当下次执行的时候就会出现错误了!要关闭应该在while()外面进行关闭!
songxiaozhao 2006-01-17
  • 打赏
  • 举报
回复
是这样的,
当正在使用 SqlDataReader 时,关联的 SqlConnection 在忙于服务 SqlDataReader,而且除了关闭以外不能对 SqlConnection 执行其他任何操作。除非调用 SqlDataReader 的 Close 方法,否则会一直处于此状态。
你的Conn在第一次SqlDataReader 的时候已经打开,但是没有关闭,就进行了第二机SqlDataReader 读取,这是不对的,
然后SqlDataReader 应该是写成这样的
Conn.open();
while(rs.Read())
{
}
rs.Close();
Nils 2006-01-17
  • 打赏
  • 举报
回复
rs2用另外一个连接 conn2
wlboy2000 2006-01-17
  • 打赏
  • 举报
回复
不是没

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧