Я пытаюсь понять, почему я получаю это сообщение об ошибке, и это заставляет меня встать на поверхность, потому что я думаю, что я применили все, что необходимо для получения желаемого результата. Что я могу сделать для этого.Я продолжаю получать «Неверную попытку прочитать, когда данных нет», хотя я уверен, что существует запись
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 Injection. – Kefash