我一直在尝试实现一个用户输入用户名和密码的登录页面,并将输入的用户名和密码与数据表中的用户名和密码进行比较。如果用户名和密码匹配,则显示消息已成功。
我一直在尝试运行代码,但我一直收到语法错误。我在visual studio中收到以下消息:
System.Data.dll 中出现 System.Data.OleDb.OleDbException 类型的未处理异常 附加信息:查询表达式中的语法错误(缺少运算符)'用户ID ='jtenori1'和[密码] ='''。
包含代码...如果您需要更多信息,请告诉我,我提前感谢您的帮助!
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Dim LoginID, Password As String
LoginID = txtLoginID.Text
Password = txtPassword.Text
Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\person\Desktop\experiment\class\Project\Project41\Project41\project41.accdb")
con.Open()
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM UserInfo WHERE User ID = '" & txtLoginID.Text & "' AND [Password] = '" & txtPassword.Text & "' ", con)
Dim sdr As OleDbDataReader = cmd.ExecuteReader()
If (sdr.Read() = True) Then
MessageBox.Show("Successfully Logged In")
txtLoginID.Enabled = False
txtPassword.Enabled = False
Else
txtLoginID.Text = ""
txtPassword.Text = ""
MessageBox.Show("Invalid User ID or Password")
End If
End Sub
答案 0 :(得分:0)
如果您有用户ID 列,则必须将其括在[用户ID]中。
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM UserInfo
WHERE [User ID] = '" & txtLoginID.Text & "' AND [Password] = '" & txtPassword.Text & "' ", con)
或强>
在查询中使用的交叉检查列名称,参考数据库中的名称。
注意:强烈建议您使用参数化查询。