Search code examples
vb.netmessagebox

Message box won't display


I want a message box to appear if the email/ password is incorrect when logging in. However nothing happens with this else statement. Does it need to be placed somewhere else for it to work?

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

Solution

  • I would simply use a Count() to check if user exists and correct.

    Note:

    • In NoAlias's answer it doesn't solve the problem that userFound will always be true.

    So I implemented this solution there might be few errors since i'm not familiar with OleDb but nothing to big hopefully

    I also implemented the Using as it is good practice to implement it when working with: 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