做了个修改密码的页面,可是代码写好了,也没有语法问题,但就是更新不了数据库!郁闷···
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;public partial class Admin_Xgpassword : System.Web.UI.Page
{
    OleDbConnection conn;
    OleDbCommand cmm;
    protected void Page_Load(object sender, EventArgs e)
    {         if (Session["login"] != "ok")
            Response.Redirect("../login.aspx");//通过session验证用户是否合法
         if (Session["qx"].ToString() != "2" && Session["qx"].ToString() != "3")
             Response.Redirect("Wq.aspx");
        conn = new OleDbConnection(System.Configuration
           .ConfigurationManager.ConnectionStrings["Accessconn"].ConnectionString);//数据库连接字符串
        conn.Open();//打开连接    }    protected void ChangePasswordPushButton_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)//此控件的作用是此空间{}内的代码在page_load后发生,即session验证用户通过后发生,确保先验证用户合法性才能修改密码
        {
            string str = "SELECT * FROM [us] WHERE [username]='" + Session["username"].ToString() + "'";//查询出当前用户的密码
            cmm = new OleDbCommand(str, conn);
            OleDbDataReader reader;
            reader = cmm.ExecuteReader();//把查询结果传递给OledbDataReader
            if (reader.Read())//如果当前OledbDataReader中有查询打数据的话,就进入循环
            {
                if (reader["password"].ToString() == CurrentPassword.Text.ToString())//把查询到的用户密码和用户输入的密码对比
                {
                    if (NewPassword.Text == "" || NewPassword.Text == null)//如果新密码为空的话
                        Label1.Text = "不能改成空密码!";//提升
                        
                    else//如果上面都满足,即没有异常
                    {
                        if (NewPassword.Text != NewPassword1.Text)//再验证用户输入的两次新密码是否一致
                            Label1.Text = "新密码与重复新密码不一致!";//提示
                        else//如果上面都满足,即没有异常
                        {
                            try
                            {
                                OleDbCommand comm = new OleDbCommand("UPDATE [us] SET [password]=@password WHERE [username]=@username", conn);//用Command来更新密码
                                comm.Parameters.Add("@password", OleDbType.LongVarChar);//定义参数
                                comm.Parameters.Add("@username", OleDbType.LongVarChar);
                                comm.Parameters["@password"].Value = NewPassword.Text;//给参数赋值
                                comm.Parameters["@username"].Value = Session["username"].ToString();
                                comm.ExecuteNonQuery();//执行更新
                                Response.Write("<script>alert(\"恭喜更改密码成功!\")</script>");
                                Session.Remove("login");//注销登录
                                Session.Remove("username");//注销用户
                                reader.Close();
                            }
                            catch { Response.Write("<script>alert(\"很遗憾更改密码失败!\")</script>"); }//如果更新不成功,提示
                        }
                    }
                }
                else
                {
                    Label1.Text = "原密码错误!";//用户输入的原密码错误
                }
            }
            else { Label1.Text = "非法用户!"; }//如果查询不到数据的话···
        }
    }
}

解决方案 »

  1.   

    不好意思,代码贴错了··· 
    眼花了···代码在下面:
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Data.OleDb;public partial class EcardAdmin_Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            using (OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationManager
              .ConnectionStrings["YktConn"].ConnectionString))
            {            if (TextBox1.Text == "" || TextBox2.Text == "" || TextBox3.Text == "" || TextBox4.Text == "")
                    Label3.Text = "信息不完整!<br>请检查是否有项目没有填写内容。";
                else if (TextBox3.Text != TextBox4.Text)
                {
                    Label3.Text = "密码与确认密码不一致,请重新输入。";
                    TextBox2.Text = "";
                    TextBox3.Text = "";
                    TextBox4.Text = "";
                }
                else
                {
                    OleDbCommand cmm2 = new OleDbCommand();
                    cmm2.Connection = conn;
                    conn.Open();
                    cmm2.CommandText = "SELECT * FROM [us] WHERE [username]='" + TextBox1.Text
                        + "' AND [password]='" + TextBox2.Text + "'";
                    OleDbDataReader reader = cmm2.ExecuteReader();
                    if (reader.Read())
                    {
                        try
                        {
                            OleDbCommand cmm = new OleDbCommand();
                            cmm.Connection = conn;
                            cmm.CommandText = "UPDATE [us] SET [password]=@password WHERE [username]=@username";
                            cmm.Parameters.Add("@username", OleDbType.LongVarChar);
                            cmm.Parameters.Add("@password", OleDbType.LongVarChar);
                            cmm.Parameters["@username"].Value = TextBox1.Text;
                            cmm.Parameters["@password"].Value = TextBox3.Text;
                            cmm.ExecuteNonQuery();
                            Response.Write("<script>alert(\"恭喜修改密码成功!\")</script>");
                            TextBox1.Text = "";
                            TextBox2.Text = "";
                            TextBox3.Text = "";
                            TextBox4.Text = "";
                            reader.Close();
                        }
                        catch
                        {
                            Response.Write("<script>alert(\"修改密码失败。\")</script>");
                            reader.Close();
                        }
                    }
                    else
                    {
                        Label3.Text = "原账号不存在或密码错误!"; 
                        reader.Close();
                    }
                }
            }
        }
    }
      

  2.   

    cmm2.CommandText = "SELECT * FROM [us] WHERE [username]='" + TextBox1.Text
                        + "' AND [password]='" + TextBox2.Text + "'";
    ----------------------------------------------------------------
     cmm.Parameters["@password"].Value = TextBox3.Text;
    --------------------
    这两段楼主到底用的哪个字段保存的密码?textbox2,textbox3 ?
      

  3.   

    textbox2  应该是原密码
    textbox3  应该是新密码你这里cmm.ExecuteNonQuery();  更新语句传进去了么?  
      

  4.   

    cmm.Parameters.Add(new SqlParameter("@username", OleDbType.LongVarChar));