简单的控制台程序,数据库连接,读出字段正确,验证却错了
Console.WriteLine("用户名");
                 string username=Console.ReadLine();
                 Console.WriteLine("密码");
                 string userpwd=Console.ReadLine();
                 SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True");
                 conn.Open();                  
                 SqlCommand cmd=conn.CreateCommand();
                 cmd.CommandText="select * from mytable where Name='"+username+"'";
                 SqlDataReader reader =cmd.ExecuteReader();
                 if (reader.Read())
                 {
                     string dbstring = reader.GetString(reader.GetOrdinal("pwd"));
                     string dbname = reader.GetString(reader.GetOrdinal("Name"));
                     if (dbstring == userpwd)
                     {                          
                         Console.WriteLine("登录成功");
                     }
                     else
                     {
                         Console.WriteLine("密码错误");
                     }                      
                 }
                 else
                 {
                     Console.WriteLine("用户名不存在!!!");
                 }
                 Console.ReadKey();
                 conn.Close();
                 conn.Dispose();                                
         Console.ReadKey();
问题是一直说密码错误,为了验证我读出的数据库字段是不是正确的 我添加了下面两行:                        Console.WriteLine(dbname);
Console.WriteLine(dbstring);
这两行输出的内容和我输入的一样呀,为什么依然不能通过验证呢?
------解决方案--------------------
会不会是一些看不见的字符,例如空格,回车换行符等。调试一下看看两个字符串的长度是不是一样,如果还是一样就要仔细检查每个字符了。
可以把if (dbstring == userpwd)判断条件改成:if (dbstring.Trim() == userpwd.Trim()),可以避免首尾有空格的情况。