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 = "";
}
}
------网友观点--------------------------网友观点--------------------
判断password和Pwd那个,两个相等,条件为真的,但是却执行的是下面else块里的语句
------网友观点--------------------------网友观点--------------------------网友观点--------------------------网友观点--------------------------网友观点--------------------
在监视里添加三个值
password, 看结果是什么
Pwd, 看结果是什么
password == Pwd ,看结果是true还是false
------网友观点--------------------
截图来看
------网友观点--------------------
if(useritem.Equals (uiterm))
------网友观点--------------------
你单步执行了吗??只要是if判断相等了肯定执行if里面的,要不然就不想等(if判断不想等)
------网友观点--------------------
复制password == Pwd到即时窗口,看看结果
------网友观点--------------------
password == Pwd 没有看到Pwd的定义,最好看下是否有空格,或者先判断长度是否相等。
------网友观点--------------------
password.equals(pwd) 不就行了, 你只是看他俩长得一样而已吧 == 比字符串 又比不出东西来
------网友观点--------------------
==是最不可靠的比较,并且如果走else那么久可以证明一定不相等。
个人建议你这样来写判断
if (string.Compare(password, Pwd, true) == 0)
当然如果你通过MessageBox.show看到的结果是一致的但是走else,不防进行比较的时候 在password、Pwd后面加上一个.Trim();方法。
------网友观点--------------------
你的程序开始罢工了,电脑核心开始反抗,小心你的电脑自动跳起打打你哦。
------网友观点--------------------
password/Pwd是什么类型的?字符串不能这么判断
------网友观点--------------------
如果确认两个字符串是一样一样的,重启电脑,
如果还不行,用360急救箱弄一下试试
还不行,就重装系统吧! 电脑有问题了
------网友观点--------------------
1.C# 中 对于 string 类型,== 会比较字符串的值。 用==判断是没问题的。
2.可能是字符串前后有空格之类的字符,楼主 Show() 出来没发现而已。
------网友观点--------------------------网友观点--------------------
这个回答牛B,大神啊!!!
------网友观点--------------------
程序就是程序,
相等就是相等,不可能出现你说的相等却跑到else里去的,
看看是不是前后有空格,或者大小写不同导致的,加上这句代码,然后截图出来看看:
MessageBox.Show("===" + password+"===" + Pwd + "===" );
------网友观点--------------------------网友观点--------------------
if ( password.Trim().Upper() == Pwd.Trim().Upper() )
------网友观点--------------------
application.run(form),这个代码一定要在主线程里运行。
如果不在主线程中运行消息循环,那进程到this.close就结束了,给你的错觉就是if程序没有运行。
------网友观点--------------------
没看清楼主的描述,请忽略我的回答。
------网友观点--------------------
你判断的是 MessageBox.Show(password);
MessageBox.Show(username);
if (password == Pwd)
{
为啥显示的是username
------网友观点--------------------
reader.Read()如果有值能读出来就为true执行里面的代码,然后if (password == Pwd)里面相等就执行里面的代码,其实你加个断点放在reader.Read()那里,然后看看这个到底是否有值
------网友观点--------------------
话说,你到底是哪个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不知道你说的哪个进不去
------网友观点--------------------
楼主要单步调试到那个 if 的地方,在监视里面调出两个字符串的值再手动比较一下,发截图给大家看看。
------网友观点--------------------------网友观点--------------------------网友观点--------------------
字符串的比较需要使用equals方法,即password.equals(pwd)。要小心空指针的问题,JDK8的话,推荐使用Objects.equals(password, pwd)。
password == pwd比较的是两个对象的内存地址是否相同,即两个是不是同一个对象。而equals比较的是两个值是否相等。
------网友观点--------------------
额。我误入了,以为是Java。原来是C#。。。
------网友观点--------------------
哈哈哈哈,这个回答太实用了,我感动哭了
------网友观点--------------------
if ( password.Trim().Upper() == Pwd.Trim().Upper() )
这个逻辑不对吧,假如按照这样,密码应该是aBc,我输入Abc,不是也通过了?
------网友观点--------------------
MessageBox.Show(password);
MessageBox.Show(username);
if (password == Pwd)
你这个显示有问题吧!建议使用equal,不要使用==。
------网友观点--------------------
你自己认为它是真吧!但是编译器不认为是真?说明你代码有问题
------网友观点--------------------------网友观点--------------------
字符串的比较需要使用equals方法,即password.equals(pwd)。要小心空指针的问题,JDK8的话,推荐使用Objects.equals(password, pwd)。
password == pwd比较的是两个对象的内存地址是否相同,即两个是不是同一个对象。而equals比较的是两个值是否相等。
------网友观点--------------------
为什么感觉是数据库找不到同类名数据,因为我的也是这么错的

------网友观点--------------------
password.Trim() == Pwd.Trim() 这样看下
------网友观点--------------------
执行false就是两个不==嘛 字符串的话用equa啦
------网友观点--------------------
是相等的啊,我把两个分别显示出来都是一样的啊
<br />你这问题解决了吗?
------网友观点--------------------
判断password和Pwd那个,两个相等,条件为真的,但是却执行的是下面else块里的语句
if (password == Pwd)
加个断点一眼就看出来了啊
------网友观点--------------------
肯定不是true哦,打个断点,添加监视结果放出来看看 肯定是false
------网友观点--------------------------网友观点--------------------------网友观点--------------------