即使控制台显示数据库中的匹配值,窗口上也会显示错误的输出

时间:2016-02-17 10:56:22

标签: c# .net

I have attached a screenshot of my output screen .我的代码给了我一个不寻常的缺陷。这是我正在研究的一个登录程序。问题是当我调试&运行代码输入指定字段的正确输入,与数据库中的条目完全相似。控制台正确地获取正确的值,但我得到的输出是一个不成功的Login.I不明白为什么这发生可能有人指导我! `

     private void button1_Click(object sender, EventArgs e)
    {
       String s1 = textBox1.Text;
       String s2 = textBox2.Text;

       SqlConnection cnn = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=register;Integrated Security=True");
       String sql = ("select Userid,Password from reg where Userid='" + s1 + "' and Password='" + s2 + "' ");
       cnn.Open();

       String userid="";
       String password="";

       SqlCommand cmd = new SqlCommand(sql,cnn);
       SqlDataReader reader  = cmd.ExecuteReader();



        if (reader.HasRows)
        {
          while(reader.Read())
          {
              userid = reader.GetString(0);
              password = reader.GetString(1);

              Console.WriteLine(userid);
              Console.WriteLine(password);
          }

If语句检查输入的userid& password与DB中现有的userid passwrd类似。

       if((s1.Equals(userid)) && (s2.Equals(password)))
          {

               MessageBox.Show("LOGIN SUCCESSFULLY DONE>>");
          }

          else
          {
               MessageBox.Show("LOGIN UNSUCCESSFUL ....");
          }
      }

1 个答案:

答案 0 :(得分:-1)

可能是字符串中还有其他空格?尝试使用Trim()

String s1 = textBox1.Text.Trim();
String s2 = textBox2.Text.Trim();

userid = reader.GetString(0).Trim();
password = reader.GetString(1).Trim();

您是否知道只从数据库返回一条记录?