로그인 양식을 만들려고하는데 문제가있는 반면 else 문은 무시 된 것 같습니다.If-Else 문이 while 루프 내에서 작동하지 않습니다.
어떻게이 코드를 추출하여 잘못된 데이터를 텍스트 상자에 넣었을 때 메시지 상자가 나타나게 할 수 있습니까? 모든 데이터베이스가 올바르게 설정됩니다.
try
{
sc.Open();
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("select * from StudentRecords where ID = '" + txtBoxUsername.Text + "' ", sc); //where ID = '" + txtBoxUsername.Text + "' and DOB = '" + textBoxPassword.Text + "'
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
if (txtBoxUsername.Text == (myReader["ID"].ToString()) && textBoxPassword.Text == (myReader["DOB"].ToString()))
{
LoginSuccessForm loginfrm = new LoginSuccessForm();
loginfrm.Show();
this.Hide();
}
else if (txtBoxUsername.Text != (myReader["ID"].ToString()) || textBoxPassword.Text != (myReader["DOB"].ToString()))
{
MessageBox.Show("Incorrect Password and/or Username", "Error");
break;
}
}
sc.Close();
}
while 루프 외부에 messagebox를 넣으려고했는데 원하는 방식으로 작동하지 않습니다. try 메소드 다음에 catch가 있고, 나는 공간을 절약하기 위해 그것을 포함하지 않았다.
데이터베이스에서 첫 번째 사용자 만 데려 오는 것 같습니다. 단서 또는 지침을 주시면 감사하겠습니다.
* 실제로 매개 변수화 된 쿼리를 사용해야합니다. SQL injection에 취약합니다. – Blorgbeard
답장을 보내 주셔서 감사합니다. 그러나 SQL 인젝션은 단순히 대학 프로젝트이므로 걱정할 필요가 없습니다. – Glitchezz
이것이 문제는 아니지만 'else if (txt ...')를 간단한 'else'로 대체 할 수 있습니다. if 체크는 중복됩니다 – MAV