日期:2014-05-18  浏览次数:20705 次

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