繁体   English   中英

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

[英]VB.Net login form, can't connect to Access database?

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

该应用程序是在Visual Studio Express 2013中创建的,而数据库是在Access 2013中创建的。当我尝试编译时,出现以下错误消息。

类型的未处理的异常“System.Data.OleDb.OleDbException”出现在system.data.dll。

附加信息: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()

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

我不确定是什么原因造成的,任何帮助将不胜感激!

谢谢阅读。

User是Access中的reserved wordaccess中reserved word 您必须使用[]封装保留字才能使它们正常工作。

您的查询应为

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

并且请仔细阅读查询中参数的用法,这将在以后为您节省很多问题。 是有关OleDb(访问)的查询和参数的一些方便信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM