在Visual Studio中使用数据库信息时出现语法错误

时间:2014-04-23 08:57:24

标签: vb.net visual-studio visual-studio-2012 login syntax

我一直在尝试实现一个用户输入用户名和密码的登录页面,并将输入的用户名和密码与数据表中的用户名和密码进行比较。如果用户名和密码匹配,则显示消息已成功。

我一直在尝试运行代码,但我一直收到语法错误。我在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

1 个答案:

答案 0 :(得分:0)

如果您有用户ID 列,则必须将其括在[用户ID]中。

Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM UserInfo 
     WHERE [User ID] = '" & txtLoginID.Text & "' AND [Password] = '" & txtPassword.Text & "' ", con)

在查询中使用的交叉检查列名称,参考数据库中的名称。

注意:强烈建议您使用参数化查询。