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 = "";
}
}
{
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, 看结果是什么
password == Pwd ,看结果是true还是false
个人建议你这样来写判断if (string.Compare(password, Pwd, true) == 0)当然如果你通过MessageBox.show看到的结果是一致的但是走else,不防进行比较的时候 在password、Pwd后面加上一个.Trim();方法。
2.可能是字符串前后有空格之类的字符,楼主 Show() 出来没发现而已。
相等就是相等,不可能出现你说的相等却跑到else里去的,
看看是不是前后有空格,或者大小写不同导致的,加上这句代码,然后截图出来看看:MessageBox.Show("===" + password+"===" + Pwd + "===" );
如果不在主线程中运行消息循环,那进程到this.close就结束了,给你的错觉就是if程序没有运行。
MessageBox.Show(username);
if (password == Pwd)
{
为啥显示的是username
第一个没问题的话:
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不知道你说的哪个进不去
password == pwd比较的是两个对象的内存地址是否相同,即两个是不是同一个对象。而equals比较的是两个值是否相等。
MessageBox.Show(username);
if (password == Pwd)
你这个显示有问题吧!建议使用equal,不要使用==。
password == pwd比较的是两个对象的内存地址是否相同,即两个是不是同一个对象。而equals比较的是两个值是否相等。