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

时间:2016-02-03 17:49:33

标签: c# .net

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

This is the code::

    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 ....");
               }
           }

[数据库条目Output

2 个答案:

答案 0 :(得分:0)

您需要在AND子句中使用WHERE而不是逗号:

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)))

答案 1 :(得分:0)

我写的代码实际上没有任何缺陷。这里的问题是数据输入过程中的运行时间。还在考虑跟踪空格,因为字符串无法成功匹配。因此解决了问题我使用了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();