Vb.net 消息框将不显示
如果登录时电子邮件/密码不正确,我希望出现一个消息框。然而,这句话没有任何效果。它是否需要放在其他地方才能工作Vb.net 消息框将不显示,vb.net,messagebox,Vb.net,Messagebox,如果登录时电子邮件/密码不正确,我希望出现一个消息框。然而,这句话没有任何效果。它是否需要放在其他地方才能工作 MyConn = New OleDbConnection MyConn.ConnectionString = connString MyConn.Open() str1 = ("SELECT * FROM [UserData] WHERE [Username] = '" & TxtUserName.Text & "' AND [Passw
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
如果您的SQL没有返回任何结果(凭据错误时就是这种情况),则永远不会调用MessageBox代码。将此代码块放在While语句之后
If userFound = True Then
UserAccountView.Show()
Me.Hide()
TxtPassword.Clear()
TxtUserName.Clear()
Else
MsgBox("Login is incorrect")
End If
我只需要使用一个计数来检查用户是否存在并正确
注:
在NoAlias的回答中,它并不能解决userFound始终为真的问题。
所以我实现了这个解决方案,可能会有一些错误,因为我不熟悉OleDb,但没什么大不了的
我还实现了Using,因为在使用:IDisposable时实现它是一个很好的实践
Read博士总是会返回一些东西,即使找不到结果,因为它是一个阅读器。只需使用[UserData]中的SELECT COUNT*执行第一个请求,其中[Username]='&TxtSerName.Text&'和[Password]='&TxtPassword.Text&'如果结果为零,则登录失败incorrect@Plutonix那么我应该在复本上回答吗?旁注:不要在几个小时内反复问同一个问题;始终使用SQL参数,绝不将密码存储为@puropoix所说的纯文本。我甚至说这是我对你另一个问题的回答。请始终使用参数。这仍然不是一个正确的解决方案,因为userFound始终为true
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