数据库中有一个usertable表,现在我要修改密码,我写了一段代码,但经过多次的修改还是没有能够完全成功,数据库中的密码还是没有改变。    在修改密码的时候要求输入用户名和原始密码,然后输入两次新密码加以确认。而其还要对各种可能的错误加以提示,如用户名不存在,原始密码不正确,两次输入新密码不相同,以及提示修改成功等等信息。这是基于C/S模式的。  谢谢高手们赐教!!

解决方案 »

  1.   

    你是说你是在一个界面上修改usertable表里的其中一个密码?
    你给出你大概的代码出来先。
      

  2.   

    先通过登陆名查询出用户表对应的记录
    然后取出这条记录的密码与界面上输入的原密码相比,如果不相等,就说报原密码错误
    如果通过就比较新密码和确认新密码,两者不一致的话也报一个错
    都通过了你就更新一下这条记录
    update 表名 set 密码=新密码 where 登录名=当前登录名
    把我写的代码贴出来,大家帮你看看吧
      

  3.   

    string uname = textBox4.Text;
                string pass = textBox1.Text;
                string connstring=@"server=localhost;Integrated Security=True;Database=ps";
                string sql = @"select user_name,pwd_id from usertable where user_name='" + this.textBox1.Text + "'";            SqlConnection conn = new SqlConnection(connstring);
                SqlCommand cmd = new SqlCommand(sql, conn);
                string uname = textBox4.Text;
                string pass = textBox1.Text;
                try
                {
                       conn.Open();
                        SqlDataReader reader=cmd.ExecuteReader();
                        if(reader.Read())
                            {
                                uname=reader[1].ToString();
                                 pass=reader[2].ToString();
                            }
                         reader.Close();
                         conn.Close();
                 }
                 catch{}
                if(uname=="")
                   {
                        MessageBox.Show("对不起,您输入的用户不存在!");
                        return;
                   }
                if(pass.Trim()!=this.textBox1.Text)
                  {
                         MessageBox.Show("对不起,用户"+uname+"的密码不正确!");
                        return;
                   }
                if(this.textBox2.Text!=this.textBox3.Text)
                    {
                         MessageBox.Show("对不起,您输入的两次密码不一致");
                         return;
                    }
                string sql1 = "update usertable set pwd_id='" + this.textBox2.Text + "' where user_name='" + uname + "'";
                    try
                    {
                        string sql1= "update usertable set pwd_id='" + this.textBox2.Text + "' where user_name='" + uname + "'";                    conn.Open();
                         SqlCommand cmd1 = new SqlCommand(sql1, conn);
                         cmd.ExecuteNonQuery();
                         conn.Close();
                    }
                 catch(SqlException er)
                    {
                         if(conn.State==ConnectionState.Open)
                         conn.Close();
                         MessageBox.Show("无法修改密码!\n"+er.Message);
                         return;
                     }
                 MessageBox.Show("已成功修改密码!");以上就是我写的,如果大家有什么更好的希望不要吝啬哈   !!! 
      

  4.   

    SqlCommand cmd1 = new SqlCommand(sql1, conn); 
                        cmd.ExecuteNonQuery(); 
    改为
    SqlCommand cmd1 = new SqlCommand(sql1, conn); 
                        cmd1.ExecuteNonQuery(); 
    自己写错变量了
      

  5.   

    变量写错了,以后要小心点。其实你可以定义一个局部的
     SqlCommand cmd 变量,那么你就不用重新定义那么多次了。
      

  6.   

    首先如果数据库里没有匹配的数据的话  不会执行   uname=reader[1].ToString(); 
                                pass=reader[2].ToString(); 
    所以  uname = textBox4.Text; pass= textBox1.Text;   还是等于这样、所以    if(uname=="") 
                  { 
                        MessageBox.Show("对不起,您输入的用户不存在!"); 
                        return; 
                  } 
                if(pass.Trim()!=this.textBox1.Text) 
                  { 
                        MessageBox.Show("对不起,用户"+uname+"的密码不正确!"); 
                        return; 
                  }  这几句根本没用