注册 登录
编程论坛 ASP.NET技术论坛

修改密码问题

晋加答 发布于 2008-04-08 19:49, 739 次点击
修改密码如下:
    为什么有错呢,系统提示:  cmd.ExecuteNonQuery(); 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
 protected void Page_Load(object sender, EventArgs e)
    {
        string user = Request["user"].ToString();//用户名
        Label1 .Text= user ;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection meteor = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["meteor"]);
        meteor.Open();
        SqlCommand comm = new SqlCommand("select * from studentlogin where username='" + Label1.Text + "' and password='" + this.TextBox1.Text + "'", meteor);

        SqlDataReader dr = comm.ExecuteReader();

        if (!dr.Read())
        {
            Response.Write("<script>alert('原密码错误!')</script>");
            dr.Close();
        }
        else
        {
            SqlCommand cmd = new SqlCommand("update studentlogin set password='" + TextBox2.Text + "'where username='" + Label1.Text + "'", meteor);
            cmd.ExecuteNonQuery();
            Response.Write("<script>alert(修改成功!'')</script>");
            meteor.Close();            
        }
    }
6 回复
#2
hebingbing2008-04-08 20:27
你的dr.close()写在if()中,当执行else时就跳过了dr.close();
建议你将程序改成这样的,会觉得清晰一些,当然你也可以修改你自己的代码以为成功能:
 protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection meteor = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["meteor"]);
        meteor.Open();
     try{
            SqlCommand cmd = new SqlCommand("update studentlogin set password='" + TextBox2.Text + "'where username='" + Label1.Text + "'"and where password='" + this.TextBox1.Text + "', meteor);
            cmd.ExecuteNonQuery();
            Response.Write("<script>alert(修改成功!'')</script>");
            meteor.Close();            
        }
   catch
      {
        Response.Write("<script>alert('原密码错误!')</script>");
       }
#3
晋加答2008-04-08 20:52
恩?
怎么有好多错呢?
update语句那.
#4
晋加答2008-04-08 21:00
咦???
我改了一下,好象可以改密码了.可是我输的原密码是错的,它也弹出修改成功.当然,数据库里的没改是真 的

[[it] 本帖最后由 晋加答 于 2008-4-8 21:08 编辑 [/it]]
#5
晋加答2008-04-08 21:02
[bo]以下是引用 [un]hebingbing[/un] 在 2008-4-8 20:27 的发言:[/bo]

你的dr.close()写在if()中,当执行else时就跳过了dr.close();


我去掉那个也还是不行啊,
#6
hebingbing2008-04-08 21:22
SqlCommand cmd = new SqlCommand("update studentlogin set password='" + TextBox2.Text.Tostring() + "'where username='" + Label1.Text.Tostring() + "'and  password='" + this.TextBox1.Text .Tostring()+ "'", meteor);
你不能原字不动的就copy吧?我没有开vc手写的,
要是你要用你的继续的话,那句不但不能删,而且要在else语句中也写上才可以通过的……
#7
晋加答2008-04-08 21:32
呵呵,你给的那个我改了啊 ,呵呵.
不过,我输的原密码是错的,它也弹出修改成功.当然,数据库里的没改是真 的
1