Vb.net VB 2008使用G MS ACCESS登录用户名和密码

Vb.net VB 2008使用G MS ACCESS登录用户名和密码,vb.net,ms-access,Vb.net,Ms Access,我只是需要一点帮助,我已经登录了,但我只想创建一个提示,如果我输入了错误的用户名和正确的密码,对话框会显示用户名不正确,反之亦然,对话框会显示密码不正确。若用户名和密码都不正确,对话框会显示用户名和密码不正确。它在MS ACCESS中连接,以下是我的代码: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim conne

我只是需要一点帮助,我已经登录了,但我只想创建一个提示,如果我输入了错误的用户名和正确的密码,对话框会显示用户名不正确,反之亦然,对话框会显示密码不正确。若用户名和密码都不正确,对话框会显示用户名和密码不正确。它在MS ACCESS中连接,以下是我的代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim connection As New OleDbConnection

    connection = New OleDb.OleDbConnection
    connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;; Data Source=" & Application.StartupPath & "\Data.mdb"

    Dim cmd As OleDbCommand = New OleDbCommand("SELECT User,Password FROM tblUser where User=? and Password=?", connection)

    cmd.Parameters.AddWithValue("User", Me.TextBox1.Text)
    cmd.Parameters.AddWithValue("Password", Me.TextBox2.Text)

    Try
        connection.Open()
        Dim read As OleDbDataReader = cmd.ExecuteReader()

        If read.HasRows Then
            read.Read()

            If Me.TextBox1.Text.ToLower() = read.Item("user").ToString And Me.TextBox2.Text.ToLower = read.Item("Password").ToString Then
                MsgBox("Login successful")
                Me.Hide()
                Form2.Show()

            End If

        Else
            MsgBox("Login unsuccessful,no connection", MsgBoxStyle.OkOnly, "Invalid")
        End If

        read.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        connection.Close()
    End Try

End Sub
试试这个:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim connection As New OleDbConnection

    connection = New OleDb.OleDbConnection
    connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;; Data Source=" & Application.StartupPath & "\Data.mdb"

    Dim cmd As OleDbCommand = New OleDbCommand("SELECT User,Password FROM tblUser where User=?", connection)

    cmd.Parameters.AddWithValue("User", Me.TextBox1.Text)

    Try
        connection.Open()
        Dim read As OleDbDataReader = cmd.ExecuteReader()

        If read.HasRows Then
            read.Read()

            If Me.TextBox2.Text.ToLower = read.Item("Password").ToString Then
                MsgBox("Login successful")
                Me.Hide()
                Form2.Show()
            Else
                MsgBox("Login unsuccessful, Incorrect Password", MsgBoxStyle.OkOnly, "Invalid")
            End If

        Else
            MsgBox("Login unsuccessful, Invalid UserName", MsgBoxStyle.OkOnly, "Invalid")
        End If
        read.Close()
    Catch ex As OleDbException
        MsgBox("Login unsuccessful,no connection", MsgBoxStyle.OkOnly, "Invalid")
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        connection.Close()
    End Try

End Sub

虽然我理解这个问题,但更安全的做法是不向用户提供有关其凭据哪部分错误的任何线索。@RogerRowland我的代码中没有错误或错误。我只是想展示更多信息。谢谢!它帮助很大,但现在只有一个小问题,我想显示,如果用户和密码是错误的,我想在你的程序中显示“无效用户名和密码”,它只会说“无效用户”,即使密码也是错误的。提前谢谢@例如,当用户名错误时,无法在数据库中找到记录。因此,在知道所查看的用户名之前,您不知道密码是否正确。当然,您可以查询密码字段,但这会有风险,因为两个用户可以保留相同的密码。因此,任何有恶意意图的人都可能知道数据库中存在特定密码,从而使您的应用程序面临安全威胁。如果你知道我的意思!