try
            {
                conn.Open();
                SqlCommand comm = conn.CreateCommand();
                comm.CommandText = "select * from Admin where UserName='" + User + "'";
                SqlDataReader reader = comm.ExecuteReader();
                if (reader.Read())
                {
                    string password = reader.GetString(reader.GetOrdinal("PassWord"));
                    string username = reader.GetString(reader.GetOrdinal("UserName"));
                    string useritem = reader.GetString(reader.GetOrdinal ("UserType"));//用户级别
                    //MessageBox.Show(useritem);
                    MessageBox.Show(password);
                    MessageBox.Show(username);
                    if (password == Pwd)
                    {
                        if(useritem.Equals (uiterm))
                        MessageBox.Show("欢迎" + username);
                        new Thread(() => Application.Run(new Menu())).Start();
                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show("密码错误!");
                        UserName.Text = "";
                        PassWord.Text = "";
                    }
                }

解决方案 »

  1.   

    判断password和Pwd那个,两个相等,条件为真的,但是却执行的是下面else块里的语句
      

  2.   

    在监视里添加三个值
    password,  看结果是什么
    Pwd,  看结果是什么
    password == Pwd ,看结果是true还是false
      

  3.   

        if(useritem.Equals (uiterm)) 
      

  4.   

    你单步执行了吗??只要是if判断相等了肯定执行if里面的,要不然就不想等(if判断不想等)
      

  5.   

    复制password == Pwd到即时窗口,看看结果
      

  6.   

    password == Pwd   没有看到Pwd的定义,最好看下是否有空格,或者先判断长度是否相等。
      

  7.   

    password.equals(pwd) 不就行了, 你只是看他俩长得一样而已吧 == 比字符串 又比不出东西来
      

  8.   

    ==是最不可靠的比较,并且如果走else那么久可以证明一定不相等。
    个人建议你这样来写判断if (string.Compare(password, Pwd, true) == 0)当然如果你通过MessageBox.show看到的结果是一致的但是走else,不防进行比较的时候 在password、Pwd后面加上一个.Trim();方法。
      

  9.   

    password/Pwd是什么类型的?字符串不能这么判断
      

  10.   

    1.C# 中 对于 string 类型,== 会比较字符串的值。 用==判断是没问题的。
    2.可能是字符串前后有空格之类的字符,楼主 Show() 出来没发现而已。
      

  11.   

    程序就是程序,
    相等就是相等,不可能出现你说的相等却跑到else里去的,
    看看是不是前后有空格,或者大小写不同导致的,加上这句代码,然后截图出来看看:MessageBox.Show("===" + password+"===" + Pwd + "===" );
      

  12.   

    应该用strcmp来比较字符串
      

  13.   

    if ( password.Trim().Upper() == Pwd.Trim().Upper() )
      

  14.   

    application.run(form),这个代码一定要在主线程里运行。
    如果不在主线程中运行消息循环,那进程到this.close就结束了,给你的错觉就是if程序没有运行。
      

  15.   

    你判断的是   MessageBox.Show(password);
                         MessageBox.Show(username);
                         if (password == Pwd)
                         {
    为啥显示的是username
      

  16.   

    reader.Read()如果有值能读出来就为true执行里面的代码,然后if (password == Pwd)里面相等就执行里面的代码,其实你加个断点放在reader.Read()那里,然后看看这个到底是否有值
      

  17.   

    话说,你到底是哪个if进不去?
    第一个没问题的话:
                        string password = reader.GetString(reader.GetOrdinal("PassWord"));
                        string username = reader.GetString(reader.GetOrdinal("UserName"));
                        string useritem = reader.GetString(reader.GetOrdinal ("UserType"));//用户级别
    这三个都断点看看,然后你那个password ==pwd也断个点看看他到底是为true?因为两个if不知道你说的哪个进不去
      

  18.   

    字符串的比较需要使用equals方法,即password.equals(pwd)。要小心空指针的问题,JDK8的话,推荐使用Objects.equals(password, pwd)。
    password == pwd比较的是两个对象的内存地址是否相同,即两个是不是同一个对象。而equals比较的是两个值是否相等。
      

  19.   

    额。我误入了,以为是Java。原来是C#
      

  20.   

    这个逻辑不对吧,假如按照这样,密码应该是aBc,我输入Abc,不是也通过了?
      

  21.   

    MessageBox.Show(password);
                        MessageBox.Show(username);
                        if (password == Pwd)
    你这个显示有问题吧!建议使用equal,不要使用==。
      

  22.   

    这是啥语言?java?
      

  23.   

    字符串的比较需要使用equals方法,即password.equals(pwd)。要小心空指针的问题,JDK8的话,推荐使用Objects.equals(password, pwd)。
    password == pwd比较的是两个对象的内存地址是否相同,即两个是不是同一个对象。而equals比较的是两个值是否相等。 
      

  24.   

    password.Trim() == Pwd.Trim()  这样看下
      

  25.   

    执行false就是两个不==嘛 字符串的话用equa啦