为什么我的登录代码不起作用?

时间:2017-04-06 19:28:29

标签: c# sql

我正在制作用户登录程序,我的代码如下:

private void button1_Click(object sender, EventArgs e)
{
    try
    {

        string b = Convert.ToString(UserNameComboBox.SelectedItem);
        SqlConnection DataFind = new SqlConnection(@"Data Source=.\sqlexpress; Initial Catalog=PAYROLL MANAGEMENT SYSTEM;Integrated security=true;");
        DataFind.Open();

        SqlCommand dmd;
        dmd = new SqlCommand("SELECT COUNT(*) FROM LoginDetail where( (UserName=' " + b + "') AND (Password='" + Password.Text + "' ))", DataFind);
        dmd.ExecuteNonQuery();
        Int32 count = Convert.ToInt32(dmd.ExecuteScalar());

        DataFind.Close();
        SelectedRowNo.Text = count.ToString();
        if (count == 1)
        {
            Form1 s = new Form1();
            s.Show();
        }
        else
        {
            MessageBox.Show("Sorry You are not an authirized user");
        }
    }
    catch { MessageBox.Show("UserName or Password not valid"); }
}

它没有给我任何输出。它说没有找到记录,虽然记录存在于sql数据库中。我无法理解为什么我的程序无法正常工作。

1 个答案:

答案 0 :(得分:8)

在用户名之前还有一个额外的空格。删除它,它应该工作。

但请记住,你在这里或多或少都做错了。你很容易受到SQL注入攻击(想想当有人给你密码ab')); DROP TABLE Users; --时会发生什么),并且你在数据库中存储了清除密码,所以任何可以访问你数据的人都可以获得所有你的用户密码。而且,由于您对SQL注入开放,任何人都可以获取您的数据。

https://xkcd.com/327/