У меня проблема с кодом на C#. Я создал форму входа в C# 2010. Когда я проверяю имя пользователя, я использовал if-condition внутри while loop, но дело в том, что даже когда имя пользователя и пароль верны, он выполняет команду else-statement. Пожалуйста, помогите мне решить эту проблему.с использованием условия IF внутри цикла while в C#
Вот мой код:
private void btnlogin_Click(object sender, EventArgs e) {
string connection=
@"Data Source=.\SQLEXPRESS;"
+" AttachDbFilename=|DataDirectory|ResturantDB.mdf;"
+" Integrated Security=True; User Instance=True";
SqlConnection cn=new SqlConnection(connection);
try {
cn.Open();
}
catch(Exception) {
// print the exception's message?
MessageBox.Show("Connection to Database failed; check Connection!");
}
SqlCommand cmd=new SqlCommand("SELECT * FROM [Login]", cn);
cmd.Connection=cn;
SqlDataReader reader=null;
reader=cmd.ExecuteReader();
while(reader.Read()) {
if(
txtuser.Text==(reader["Username"].ToString())
&&
txtpass.Text==(reader["Password"].ToString())
) {
//MessageBox.Show("logged in!");
Home newhome=new Home();
newhome.Show();
this.Hide();
}
else {
MessageBox.Show("Incorrect credentials!");
}
}
}
У вас есть только один ро w в таблице входа в систему? –
Во-первых: кажется, что вы храните пароли в текстовом виде. Не надо! На SO есть много вопросов о хэшировании и солевом пароле. пожалуйста, внимательно прочитайте их. Во-вторых: вы не хотите запрашивать * все * строки в своей учетной записи. Только тот, который соответствует данному 'Username'. Тогда проверьте только один раз. Не используйте здесь петлю. – Corak