1

プログラムのログインフォームがあり、正常に動作しますが、データベースにないユーザー名とパスワードを入力すると、ユーザー名とパスワードのテキストボックスはテキストをクリアするだけで、「間違ったユーザー名/」というメッセージボックスは表示されませんパスワード"

これが私のコードです:

 Dim con As OleDbConnection = New OleDbConnection( _
               "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= UserPass.mdb;")
    con.Open()
    Dim str As String
    str = "SELECT * FROM UserPass WHERE Username='" & txtUsername.Text & "' AND Password='" & txtPassword.Text & "'"
    Dim cmd As OleDbCommand = New OleDbCommand(str, con)
    cmd.Parameters.AddWithValue("user", txtUsername.Text)
    cmd.Parameters.AddWithValue("pass", txtPassword.Text)
    Dim sdr As OleDbDataReader = cmd.ExecuteReader()
    ' It will be case sensitive if you compare usernames here.   
    If sdr.HasRows Then
        If sdr.Read Then
            If txtPassword.Text <> sdr("Password").ToString Or txtUsername.Text <> sdr("Username").ToString Then
                MessageBox.Show(" Incorrect Username/Password. Login Denied ", " Error! ", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Else
                MessageBox.Show(" You are now Logged In! ", " Welcome! ", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                frmOne.Show()
                Me.Hide()
            End If
        End If
    End If

データベースにないユーザー名とパスワードを入力したときに、プログラムにメッセージボックスを表示させるにはどうすればよいですか?

4

2 に答える 2

3

Line sdr.HasRows は発火するようには見えません。ユーザー名とパスワードが一致しない場合、選択ステートメントでは行がありません。

コードを次のように変更することを検討してください。

If sdr.HasRows Then
    If sdr.Read Then
            MessageBox.Show(" You are now Logged In! ", " Welcome! ", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
            frmOne.Show()
            Me.Hide()
    End If
Else
    MessageBox.Show(" Incorrect Username/Password. Login Denied ", " Error! ", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
于 2012-12-02T01:34:05.900 に答える
1

これが機能するかどうかを確認してください。DMudge が示した方法を使用していますが、ケースのチェックを追加しています。それが機能する場合、彼の答えを受け入れます。

If sdr.HasRows Then
    If sdr.Read Then
        If txtPassword.Text <> sdr("Password").ToString Or txtUsername.Text <> sdr("Username").ToString Then
            MessageBox.Show(" Incorrect Username/Password. Login Denied ", " Error! ", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            MessageBox.Show(" You are now Logged In! ", " Welcome! ", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
            frmOne.Show()
            Me.Hide()
        End If
    End If
Else
    MessageBox.Show(" Incorrect Username/Password. Login Denied ", " Error! ", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
于 2012-12-02T02:36:44.840 に答える