1

ログインフォームを作成しようとしているところに問題がありますが、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メソッドに従うのは問題です。スペースを節約するために含めませんでした)。

そうは言っても、データベース内の最初のユーザーのみを取得しているようです。手がかりやガイダンスをいただければ幸いです。

4

1 に答える 1