C# 中的登录代码中的问题

本文关键字:问题 代码 登录 | 更新日期: 2023-09-27 18:33:09

我已经修改了我以前编写的代码,但仍然无法找到缺陷......我正在尝试使用DB的列名作为代码中的参数来检查登录。我提供的 If 语句似乎不起作用,因为代码始终显示登录失败,而参数能够在控制台上返回数据库记录。(如下面的链接所示)。然而,控件没有输入 if 语句...

这是代码:

    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((s1.Equals(userid)) && (s2.Equals(password)))
               {
                    MessageBox.Show("LOGIN SUCCESSFULLY DONE>>");
               }
               else
               {
                    MessageBox.Show("LOGIN UNSUCCESSFUL ....");
               }
           }

[Database EntryOutput

C# 中的登录代码中的问题

您需要

WHERE 子句中使用 AND 而不是逗号:

String sql=("select userid,password from reg where Userid='"+s1+"' and Password='"+s2+"' ")
                                                                   ^^^  

然后,您需要执行查询:

string userid, password;
using(var cmd = new SqlCommand(sql,cnn))
{
   cnn.Open();
   using (var reader = cmd.ExecuteReader())
   {
      reader.Read();
      userid = reader.GetString(0);
      password = reader.GetString(1);
   }
}

然后,使用 if 语句中的值:

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

我写的代码实际上没有任何缺陷。这里的问题是输入数据期间的运行时间。还考虑了尾随空格,因此无法成功匹配字符串。因此,为了解决这个问题,我使用了trim()函数。

这是我所做的更改 -

 String s1 = textBox1.Text.Trim();
        String s2 = textBox2.Text.Trim();
     //And further in the while loop
            userid = reader.GetString(0).Trim();
            password = reader.GetString(1).Trim();