cmd.CommandText="select password from tb_user where name='"+Form1.name+"'";
            cmd.CommandType=CommandType.Text;
            psw = cmd.ExecuteScalar().ToString();
            MessageBox.Show(psw);
            if (txtOld.Text.Equals(psw) == false)
            {                MessageBox.Show("旧密码不正确,请重新输入!", "系统提示");
            }

解决方案 »

  1.   

    if (txtOld.Text.Equals(psw) == false) 
                {                 MessageBox.Show("旧密码不正确,请重新输入!", "系统提示"); 
                }
    好像没什么错误啊
    大小了你就用
    txtOld.Text==psw这样啊
      

  2.   

    psw = cmd.ExecuteScalar().ToString(); 
    你声明psw了吗?
    我觉得是不是少了个String
      

  3.   

    MessageBox.Show("旧密码不正确,请重新输入!", "系统提示"); 或者是你这个中的逗号是不是弄成中文式的逗号了!!!
      

  4.   

    已经声明string psw="";了,但是程序一直判断txtOld.Text.Equals(psw)的值是false
      

  5.   

    我改成txtOld.Text==psw还是一直是txtOld.Text.Equals(psw)的值是false
      

  6.   

    楼主检查一下txtOld.Text的值,如果txtOld的类型为密码类型的,则该值可能为空。另外楼主的代码中需注意一些问题:
    1.cmd的参数考虑用SqlParameter,以避免安全性问题。
    2.考虑cmd的返回值为null的情况。
      

  7.   

    string psw="";
                cmd.CommandText="select password from tb_user where name='"+Form1.name+"'";
                cmd.CommandType=CommandType.Text;
                psw = cmd.ExecuteScalar().ToString();
                MessageBox.Show(psw);
                //if (txtOld.Text.Equals(psw) == false)
                if(txtOld.Text!=psw)
                {
                    MessageBox.Show(txtOld.Text.Equals(psw).ToString());
                    MessageBox.Show(txtOld.Text);
                    MessageBox.Show("旧密码不正确,请重新输入!","系统提示");
                }
                else  
                if (txtNew.Text.Equals(txtRe.Text)==false)
                    MessageBox.Show("两次输入的密码不同,请重新输入!");
                else
                {
                    cmd.CommandText = "update tb_user set password='" + txtNew.Text + "' where name='" + Form1.name + "'";
                    cmd.CommandType = CommandType.Text;
                    if (cmd.ExecuteNonQuery() > 0)
                        MessageBox.Show("密码修改成功!", "系统提示");
                }
    这是源代码,帮忙看看哪错了?
      

  8.   

    同意检查一下txtOld.Text的值,另外是否在输入的时候存在前后有空格的情况呢,尝试增加txtOld.Text.Trim()去掉前后空格尝试一下。
      

  9.   

    你设断点调试下,看看txtOld.Text和psw分别是什么
      

  10.   

           
       
            SqlDataReader myread = cmd.ExecuteReader();//用ExecuteReader()                    while (myread.Read)
                {                string psw = myread["password"].ToString();//读取密码                MessageBox.Show(psw);                if (txtOld.Text.Equals(psw ) == false)
                    {                    MessageBox.Show("旧密码不正确,请重新输入!", "系统提示");
                    } 
      

  11.   

    messagebox可以设置两个参数,“系统提示”是messagebox的标题
      

  12.   

    谢谢大家,我再改一下,用cmd.ExecuteReader()试试!
      

  13.   

    设置了断点,看了一下看看txtOld.Text和psw的值,发现psw的值后面有好几个空格,应该是建的用户表里数据类型设置的问题,谢谢大家!
      

  14.   

    这样应该可以cmd.CommandText="select password from tb_user where name='"+Form1.name+"'"; 
    string psw = cmd.ExecuteScalar().ToString();  
    if(txtOld.Text.trim()!=psw) 

      MessageBox.Show("旧密码不正确,请重新输入!","系统提示");
      txtOld.Text="";
      return;

    else  
    if (txtNew.Text.trim()!=txtRe.Text.trim()) 
    {
      MessageBox.Show("两次输入的密码不同,请重新输入!"); 
      txtNew.Text="";
      txtRe.Text="";
      return;
    }
    else 

     cmd.CommandText = "update tb_user set password='" + txtNew.Text + "' where name='" + Form1.name + "'"; 
     if (cmd.ExecuteNonQuery() > 0) 
       MessageBox.Show("密码修改成功!", "系统提示"); 
      

  15.   

    是trim()的问题吧?设置断点,看各自的值啊,为什么不等?不一目了然吗?
    我一看这个帖子就怀疑是trim()的问题,但我没说,呵~【原创家庭记账簿1.2.5,简单实用,通俗易懂,欢迎工薪阶层、家庭主妇下载使用 http://download.csdn.net/source/1900400】