急!已有打开的与此命令相关联的 DataReader,必须首先将它关闭。 asp.net

不再三重门 2013-11-30 10:00:44
源代码:


public partial class forget_psw2 : System.Web.UI.Page
{
string conStr = "server=.\\sqlexpress;database=User;uid=sa;pwd=123;";

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlConnection con = new SqlConnection(conStr);
con.Open();

string sqlQuery = "select * from userinfo where userName='" + Request.Params["id"].ToString() + "'";
SqlCommand cmd = new SqlCommand(sqlQuery, con);
SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
TextBox1.Text = dr["question"].ToString();
}
dr.Close();
con.Close();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//一个连接只能打开一个datareader
SqlConnection con = new SqlConnection(conStr);
con.Open();
string sqlQuery = "select * from userinfo where userName='" + Request.Params["id"].ToString() + "'";
SqlCommand cmd = new SqlCommand(sqlQuery, con);
SqlDataReader dr = cmd.ExecuteReader();


while (dr.Read())
{


if (TextBox2.Text.Trim() == dr["answer"].ToString().Trim())
{
//Response.Redirect("forget_psw2.aspx?id='" + Request.Params["id"].ToString() + "");
sqlQuery = "update userinfo set password = '" + TextBox3.Text + "'";
cmd.CommandText = sqlQuery;

if (cmd.ExecuteNonQuery() > 0)
{
this.Response.Write(" <script language=javascript>alert('修改密码成功!');</script> ");
}
else
{
this.Response.Write(" <script language=javascript>alert('修改失败!');</script> ");
}

}
else
{
this.Response.Write(" <script language=javascript>alert('回答错误!');</script> ");
TextBox2.Text = "";
TextBox3.Text = string.Empty;
}


}
con.Close();
dr.Close();

}
...全文
116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
不再三重门 2013-11-30
  • 打赏
  • 举报
回复
错误是"已有打开的与此命令相关联的 DataReader"
木子李1212 2013-11-30
  • 打赏
  • 举报
回复
肯定是哪里写错了,Web.Config报什么错误
不再三重门 2013-11-30
  • 打赏
  • 举报
回复
引用 2 楼 liliu0401 的回复:
Reader读取数据完成后,必须先关闭。而且连接数据库不应该放在Web.config里面吗?
我都是用语句连接,在Web.config总是错误,不知道怎么连,也感觉没必要.Reader已经关闭了啊
不再三重门 2013-11-30
  • 打赏
  • 举报
回复
引用 1 楼 hdhai9451 的回复:
你只是在测试的吧? 在实际应用中,一般访问数据都有公共的方法,连接数据是一个方法,执行sql语句,查询语句,执行存储过程等,都有单独的方法. 当然每次访问数据完后,都要关闭连接
是交作业而已,实际是要有架构的吧
木子李1212 2013-11-30
  • 打赏
  • 举报
回复
Reader读取数据完成后,必须先关闭。而且连接数据库不应该放在Web.config里面吗?
Andy__Huang 2013-11-30
  • 打赏
  • 举报
回复
你只是在测试的吧? 在实际应用中,一般访问数据都有公共的方法,连接数据是一个方法,执行sql语句,查询语句,执行存储过程等,都有单独的方法. 当然每次访问数据完后,都要关闭连接

62,074

社区成员

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

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

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

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