ログインフォームを作成しようとしているところに問題がありますが、else ステートメントは無視されているようです。
正しくないデータがテキスト ボックスに入力されたときにメッセージ ボックスが表示されるようにするには、このコードの抜粋をどのように記述すればよいですか? (すべてのデータベースが正しく設定されています)。
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 ループの外側に配置しようとしましたが、期待どおりに動作しません。(tryメソッドに従うのは問題です。スペースを節約するために含めませんでした)。
そうは言っても、データベース内の最初のユーザーのみを取得しているようです。手がかりやガイダンスをいただければ幸いです。