广告
淘宝内部优惠券
当前位置: 开发异常方案库» .NET技术 » if判断的条件是真,却不执行if块中的代码什么原因

if判断的条件是真,却不执行if块中的代码什么原因

开发异常方案库  收集整理于:2020-05-21 10:51:00  浏览:66次
 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 = "";                     }                 }

------网友观点--------------------
哪个if判断为真,哪个代码块没执行

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

------网友观点--------------------
那两个不相等,你在仔细检查一下

------网友观点--------------------
字符串里有没有多个空格或者点之类的

------网友观点--------------------
是相等的啊,我把两个分别显示出来都是一样的啊

------网友观点--------------------
没有,就是单纯的字符串

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

------网友观点--------------------
引用 5 楼 qq_37214716 的回复:
是相等的啊,我把两个分别显示出来都是一样的啊
截图来看

------网友观点--------------------
    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() 出来没发现而已。

------网友观点--------------------
绝对不相等,只是你认为相等。仔细对比一下吧。

------网友观点--------------------
引用 17 楼 wang_peng 的回复:
如果确认两个字符串是一样一样的,重启电脑, 如果还不行,用360急救箱弄一下试试 还不行,就重装系统吧!  电脑有问题了
这个回答牛B,大神啊!!!

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

------网友观点--------------------
应该用strcmp来比较字符串

------网友观点--------------------
if ( password.Trim().Upper() == Pwd.Trim().Upper() )

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

------网友观点--------------------
引用 24 楼 马少华 的回复:
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比较的是两个值是否相等。

------网友观点--------------------
引用 32 楼 dadiyang 的回复:
字符串的比较需要使用equals方法,即password.equals(pwd)。要小心空指针的问题,JDK8的话,推荐使用Objects.equals(password, pwd)。 password == pwd比较的是两个对象的内存地址是否相同,即两个是不是同一个对象。而equals比较的是两个值是否相等。
额。我误入了,以为是Java。原来是C#。。。

------网友观点--------------------
引用 20 楼 水边2的回复:
Quote: 引用 17 楼 wang_peng 的回复:
如果确认两个字符串是一样一样的,重启电脑, 如果还不行,用360急救箱弄一下试试 还不行,就重装系统吧!  电脑有问题了
这个回答牛B,大神啊!!!
哈哈哈哈,这个回答太实用了,我感动哭了

------网友观点--------------------
引用 23 楼 吉普赛的歌的回复:
if ( password.Trim().Upper() == Pwd.Trim().Upper() )
这个逻辑不对吧,假如按照这样,密码应该是aBc,我输入Abc,不是也通过了?

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

------网友观点--------------------
你自己认为它是真吧!但是编译器不认为是真?说明你代码有问题

------网友观点--------------------
这是啥语言?java?

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

------网友观点--------------------
为什么感觉是数据库找不到同类名数据,因为我的也是这么错的

------网友观点--------------------
password.Trim() == Pwd.Trim()  这样看下

------网友观点--------------------
执行false就是两个不==嘛 字符串的话用equa啦

------网友观点--------------------
引用 楼主 <span style="color:#4788C7">qq_37214716</span>的回复:
是相等的啊,我把两个分别显示出来都是一样的啊
<br />你这问题解决了吗?

------网友观点--------------------
引用 2 楼 qq_37214716 的回复:
判断password和Pwd那个,两个相等,条件为真的,但是却执行的是下面else块里的语句
  if (password == Pwd) 加个断点一眼就看出来了啊

------网友观点--------------------
肯定不是true哦,打个断点,添加监视结果放出来看看  肯定是false

------网友观点--------------------

------网友观点--------------------

------网友观点--------------------
发布此文章仅为传递网友分享,不代表本站观点,若侵权请联系我们删除,本站将不对此承担任何责任。
软件开发 程序错误 异常 ybaby.netCopyright © 2020-2026  ybaby 版权所有  桂ICP备17004385号-2 网站地图