簡體   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