我正在制作用户登录程序,我的代码如下:
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数据库中。我无法理解为什么我的程序无法正常工作。
答案 0 :(得分:8)
在用户名之前还有一个额外的空格。删除它,它应该工作。
但请记住,你在这里或多或少都做错了。你很容易受到SQL注入攻击(想想当有人给你密码ab')); DROP TABLE Users; --
时会发生什么),并且你在数据库中存储了清除密码,所以任何可以访问你数据的人都可以获得所有你的用户密码。而且,由于您对SQL注入开放,任何人都可以获取您的数据。