如果电子邮件/密码输入错误,则无法显示错误消息 [英] Not able to show error message if the email/password wrongly entered
问题描述
如果电子邮件/密码输入错误,我希望出现一个消息框。我正在使用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
而博士。 Read()
userFound =真
TxtPassword.Text = dr( Username)。ToString
TxtUserName.Text = dr( Password)。ToString
FirstNameToPass = dr( 名字).ToString
LastNameToPass = dr(姓).ToString
AddressToPass = dr(地址).ToString
EmailToPass = dr(电子邮件).ToString
如果userFound = True,则
UserAccountView.Show ()
Me.Hide()
TxtPassword.Clear()
TxtUserName.Clear()
其他
MsgBox(登录不正确)
如果
结束,而
结束MyConn.Close()
如果
结束$
reader.Read()
如果行存在则返回true,如果结果集为空则返回false。在您的情况下,如果没有这样的用户(具有提供的用户名和密码),则程序将不会进入循环,并且不会达到如果userFound = True
块。 / p>
因此,跳过 循环并编写如下内容:
如果dr.HasRows
dr.Read()
TxtPassword.Text = dr( Username)。ToString
TxtUserName.Text = dr (密码)。ToString
FirstNameToPass = dr(名字)。ToString
LastNameToPass = dr(姓氏)。ToString
AddressToPass = dr(地址)。 ToString
EmailToPass = dr( Email)。ToString
UserAccountView.Show()
Me.Hide()
TxtPassword.Clear()
TxtUserName.Clear()
其他
MsgBox(登录不正确)
如果
编辑:
还有一件事情:永远不要将字符串连接成命令文本。而是使用参数:
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)))
I want a message box to appear if the email/ password is entered incorrectly. I am using an else statement but it doesn't display the message if the login is incorrect.
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
reader.Read()
returns true if row exists or false if resultset is empty. In your case, if there is no such user (with provided username and password), program won't enter loop and it won't reach If userFound = True
block.
So, skip while
loop and write something like this:
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
edit:
one more thing: NEVER concatenate strings to make command text. Instead, use paramters:
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)))
这篇关于如果电子邮件/密码输入错误,则无法显示错误消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!