2017-05-15 11 views
-1

電子メール/パスワードが誤って入力された場合は、メッセージボックスを表示します。私は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 
+0

英語が少し改良され、vb.netとしてタグ付けされている可能性が高いと思われるため、SQLよりもエラーがあります –

答えて

0

reader.Read()結果セットが空の場合はtrue、存在しない場合はfalseを返します。あなたのケースでは、そのようなユーザーがない場合(ユーザー名とパスワードを提供しています)、プログラムはループに入りませんので、ブロックIf userFound = Trueには届きません。

だから、whileループをスキップして、このような何かを書く:

If dr.HasRows 
    dr.Read() 
    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 

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

編集:

もう一つ:コマンドテキストを作るために文字列を連結しないでください。代わりに、パラメータを使用してください:

str1 = ("SELECT * FROM [UserData] WHERE [Username] = ? AND [Password] = ?") 
Dim cmd1 As OleDbCommand = New OleDbCommand(str1, MyConn) 
cmd1.Parameters.Add(New OleDbParameter("Username", CType(TxtUserName.Text, String))) 
cmd1.Parameters.Add(New OleDbParameter("Password", CType(TxtPassword.Text, String))) 
関連する問題