当前位置:编程学习 > C#/ASP.NET >>

ASP.NET中SqlConnection、SqlDataReader对象打开关闭问题

SqlConnection conData;
SqlCommand cmd;
SqlDataReader cityName;
conData=new SqlConnection("workstation id=house;packet size=4096;user id=sa;initial catalog=samples;persist security info=True;password=1234");
cmd=new SqlCommand("Select * from citys",conData);
conData.Open();
cityName=cmd.ExecuteReader();
city.DataSource=cityName;
city.DataBind();
cityName.Close();
conData.Close();
在执行的时候总是提示conData已经打开,如果我把conData.Open();改为:
if(conData.State==ConnectionState.Closed)
{
conData.Open();
}
又提示:已有打开的与此连接相关联的 DataReader,必须首先将它关闭
请问高手这是为什么啊,我开机后并未运行其他的aspx文件啊?
另外跟这个代码一样的aspx文件跟这个文件在一个项目中的却可以正常运行如下:
SqlConnection conData;
SqlCommand cmd;
SqlDataReader UserInfo;
    conData=new SqlConnection("workstation id=house;packet size=4096;user id=sa;initial catalog=samples;persist security info=True;password=1234");
cmd=new SqlCommand("Select * From Users",conData);
conData.Open();
            UserInfo=cmd.ExecuteReader();
Users.DataSource=UserInfo;
Users.DataBind();
UserInfo.Close();
            conData.Close();
这是为什么啊?
--------------------编程问答-------------------- using (SqlConnection cn = new SqlConnection(“”))
  {
  SqlCommand cmd1 = new SqlCommand("", cn);
  cn.Open();
  using (SqlDataReader dr1 = cmd1.ExecuteReader())
  {
  while (dr1.Read())
  {
  string sql= "";
  SqlConnection conn2 = new SqlConnection("");
  SqlCommand cmd2 = new SqlCommand(sql, conn2 );
  cmd2.ExecuteNonQuery();
  }
  }

  }
--------------------编程问答-------------------- 第一个cn、cmd1,与第二个conn2、cmd2都应该怎么写啊? --------------------编程问答-------------------- 不好意思了,分数不够,不能开帖。。。借顶来发个问帖

。。。
asp.net使用HTML控件问题

A页面有html的name为input1的input控件,我想在B页面(page_load时)接收这个值,如何做?
试过Request.Form["input1"]了,值是空的。。。不知道是什么原因?

PS:我是想做购物功能,流程如下:
1、A页面里面让它输入商品数量
2、点击加入购物车按钮时,跳转到B页面,这时B第一次加载,接收A页面输入的商品数量(当然还有其它值),将这些量写入COOKIE
3、上面只是自己的想法,谁有更好的解决办法,拿出来分享一下呀,最好有比较完整的代码
4、急用的,谢谢各位。。。 --------------------编程问答-------------------- 是不是上一次连接后没有关闭啊?
关闭时
if (conn.State == ConnectionState.Open)
                    conn.Close(); --------------------编程问答--------------------
引用 3 楼 scyyzgxh 的回复:
不好意思了,分数不够,不能开帖。。。借顶来发个问帖

。。。
asp.net使用HTML控件问题

A页面有html的name为input1的input控件,我想在B页面(page_load时)接收这个值,如何做?
试过Request.Form["input1"]了,值是空的。。。不知道是什么原因?

PS:我是想做购物功能,流程如下:
1、A页面里面让它输入商品数量
2、点击……


用服务器控件TextBox,把输入的值放到URL的参数中,在B页面获取,或者把输入的值添加到session,在B页面再获取 --------------------编程问答--------------------
引用楼主 housemouse 的回复:
conData.Open();
cityName=cmd.ExecuteReader();
city.DataSource=cityName;
city.DataBind();
cityName.Close();
conData.Close();


不要这样写,不要把一个 DataReader 设置给DataSource,因为即使你执行控件的 DataBind 方法,它也不是当时就读取数据,而是(只是设置一个bool类型的标志然后)等到真正输出html之前才处理。

应该:把数据读取到DataTable,或者更好地,强类型的数据集合,然后把结果才设置给DataSource。 --------------------编程问答-------------------- 当然也不是所有控件的DataBind都是延迟执行,这要看你的city、Users分别是何种控件。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,