简单的控制台程序,数据库连接,读出字段正确,验证却错了
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()),可以避免首尾有空格的情况。