消息框不会显示

时间:2017-05-15 16:10:46

标签: vb.net messagebox

如果登录时电子邮件/密码不正确,我希望显示一个消息框。但是此else语句没有任何反应。它是否需要放在其他地方才能发挥作用?

MyConn = New OleDbConnection 
    MyConn.ConnectionString = connString 
    MyConn.Open() 

    str1 = ("SELECT * FROM [UserData] WHERE [Username] = '" & TxtUserName.Text & "' AND [Password] = '" & TxtPassword.Text & "'") 
    Dim cmd1 As OleDbCommand = New OleDbCommand(str1, MyConn)
    dr = cmd1.ExecuteReader 
    While dr.Read() 
        userFound = True 
        TxtPassword.Text = dr("Username").ToString 
        TxtUserName.Text = dr("Password").ToString 
        FirstNameToPass = dr("First Name").ToString 
        LastNameToPass = dr("Last Name").ToString 
        AddressToPass = dr("Address").ToString 
        EmailToPass = dr("Email").ToString 
        If userFound = True Then
            UserAccountView.Show() 
            Me.Hide() 
            TxtPassword.Clear() 
            TxtUserName.Clear() 
        Else
            MsgBox("Login is incorrect")
        End If
    End While
    MyConn.Close() 
End If

2 个答案:

答案 0 :(得分:0)

如果您的SQL没有返回结果,那么当凭据错误时,将永远不会调用MessageBox代码。将此代码块放在While语句之后。

If userFound = True Then
    UserAccountView.Show() 
    Me.Hide() 
    TxtPassword.Clear() 
    TxtUserName.Clear() 
Else
    MsgBox("Login is incorrect")
End If  

答案 1 :(得分:0)

我只需使用Count()来检查用户是否存在并且正确无误。

注意:

  • 在NoAlias的回答中,它并没有解决userFound始终为真的问题。

所以我实施了这个解决方案可能会有很少的错误,因为我不熟悉OleDb,但没什么可大的希望

我还实施了Using,因为在使用IDisposable()

时实施它是一种很好的做法
Using MyConn As New OleDbConnection
    MyConn.ConnectionString = connString
    MyConn.Open()
    Dim check As String = "SELECT COUNT(*) FROM [UserData] WHERE [Username] = '" & TxtUserName.Text & "' AND [Password] = '" & TxtPassword.Text & "'"
    Dim UserExist As Boolean = False
    Dim command As OleDbCommand = New OleDbCommand(check, MyConn)
    Using reader As OleDbDataReader = command.ExecuteReader()
        While reader.Read()
            If reader(0) = 0 Then
                UserExist = False
            Else
                UserExist = True
            End If
        End While
    End Using
    If UserExist = True Then
        Dim getData As String = "SELECT * FROM [UserData] WHERE [Username] = '" & TxtUserName.Text & "'"
        Dim command2 As OleDbCommand = New OleDbCommand(getData, MyConn)
        Using reader As OleDbDataReader = command2.ExecuteReader()
            While reader.Read()
                userFound = True
                TxtPassword.Text = dr("Username").ToString
                TxtUserName.Text = dr("Password").ToString
                FirstNameToPass = dr("First Name").ToString
                LastNameToPass = dr("Last Name").ToString
                AddressToPass = dr("Address").ToString
                EmailToPass = dr("Email").ToString
            End While
        End Using
    Else
        MsgBox("Login is incorrect")
    End If
    MyConn.Close()
End Using