【发布时间】:2015-11-15 15:47:42
【问题描述】:
我一直在试图弄清楚为什么我会收到此错误消息,并且它让我陷入困境,因为我认为我已经应用了所有需要的东西来获得我想要的结果。我该怎么做才能做到这一点。
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
// Receive user input from login screen
string username = txtUsername.Text;
string password = txtPassword.Text;
// Test if user input is null or white space aka empty
if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
MessageBox.Show("Please enter both username and password");
else
{
// Establish connection with database
SqlConnection cn = new SqlConnection(@"SERVER=KACY-PC\SQLEXPRESS2014;DATABASE=hardwareMgmt;Integrated Security=True");
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
string strSQL = "SELECT * FROM tbl_user WHERE username = '" + username + "' AND password = '" + password + "'";
cmd.CommandText = strSQL;
SqlDataReader dr = cmd.ExecuteReader();
// Count number of record
int count = 0;
while (dr.Read())
count += 1; MessageBox.Show(Convert.ToString(count));
dr.Read();
// Validate whether user has logged in before and display appropriate
if (count == 1 && dr["first_login"].ToString() == "N")
MessageBox.Show("Welcome back '" + dr["first_name"].ToString() + "' '" + dr["last_name"].ToString() + "'", "Welcome back", MessageBoxButtons.OK);
else if (count == 1 && dr["first_login"].ToString() == "Y")
MessageBox.Show("Hello " + dr["first_name"].ToString() + "' '" + dr["last_name"].ToString() +
"\nIt appears that you are logging in for the first time" +
"\nor your password got reset", "Welcome", MessageBoxButtons.OK, MessageBoxIcon.Information);
else if (count > 1)
MessageBox.Show("Duplication in user account \nPlease contact System Administrator", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
MessageBox.Show("Invalid Username or Password", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
在登录窗口中输入凭据后,我不断收到以下结果。我确信在数据库中找到了该记录,但它只是没有读取它。
【问题讨论】:
-
是的,我确定它会返回数据。我检查了数据库,甚至打印了上面代码中所述的记录数。此外,我只是为明天到期的学校作业做这件事。但可以肯定的是,我也想知道你有什么想法来缓解 SQL 注入。
标签: c# winforms desktop-application