VB.Net登录表单,无法连接Access数据库?

时间:2014-11-28 09:28:50

标签: .net vb.net ms-access

我正在创建一个应用程序,我在第一个障碍时遇到了困难。我创建了一个由用户名和密码文本框组成的登录表单,其中的条目必须与数据库中的记录匹配才能继续。

应用程序在Visual Studio Express 2013中创建,数据库在Access 2013中创建。 当我尝试编译时,我收到以下错误消息。

System.Data.dll 中出现'System.Data.OleDb.OleDbException'类型的未处理异常。

其他信息:FROM子句中的语法错误。

页面的代码在

下面
Imports System

Imports System.Data

Imports System.Data.OleDb

Imports System.Data.SqlClient

Public Class frm_1_Login

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_Login.Click
    ' Check if username or password is empty
    If txt_Username.Text = "" Or txt_Password.Text = "" Then
        lbl_LoginWarning.Visible = True
    Else
        'Connect To Database
        Dim conn As New System.Data.OleDb.OleDbConnection()
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Kevin\Desktop\Non Conformance\NonConformance.accdb"

        Dim sql As String = "SELECT * FROM User WHERE UserName ='" & txt_Username.Text & "' AND UserPassword = '" & txt_Password.Text & "'"

        Dim sqlCom As New System.Data.OleDb.OleDbCommand(sql)

        'open database connection
        sqlCom.Connection = conn
        conn.Open()



        ' Try


        Dim sqlRead As System.Data.OleDb.OleDbDataReader = sqlCom.ExecuteReader()

        If sqlRead.Read() Then
            frm_2_MainMenu.Show()
            Me.Hide()
        Else
            'if user enters wrong username and password combination display error message
            lbl_LoginWarning.Visible = True
            'clear all fields
            txt_Password.Text = ""
            txt_Username.Text = ""
            'Focus in username field
            txt_Username.Focus()
        End If
        ' Catch ex As Exception
        'MessageBox.Show("Failed to connect to Database..", "Database Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        'End Try
    End If
End Sub
End Class

当它向我发送错误消息时,它突然显示这行代码

Dim sqlRead As System.Data.OleDb.OleDbDataReader = sqlCom.ExecuteReader()

我已将查询复制到访问权限中,并且工作正常。

我不确定是什么导致了这一点,我们非常感谢任何帮助!

感谢阅读。

1 个答案:

答案 0 :(得分:2)

User是Access中的reserved wordReserverd words in access。 您必须使用[]封装保留字以使其工作。

您的查询应该是

SELECT * FROM [User] WHERE UserName ='" & txt_Username.Text & "' AND UserPassword = '" & txt_Password.Text & "'

请仔细阅读查询中参数的使用,以后会为您节省很多问题。 Here是关于OleDb(Access)

的查询和参数的一些方便信息