vb.net访问数据库的连接

问题描述 投票:0回答:1

我正在尝试将Access数据库迁移到vb.net winform(.net框架)。我使用此软件的机会极为有限,因此我要部分解决每件事。我的目标是在任何人插手使用和访问数据库之前(一次一件事情)最终将数据转换为SQL Server。无论如何,我已经通过数据源建立了连接,创建了一个基本的登录表单,并重构了我从访问数据库中移植的代码。这就是我所拥有的...

Public intLogonAttempts As Long
    Dim connection As New OleDbConnection(My.Settings.DataConnectionString)

    Private Sub Btn_Login_Click(sender As Object, e As EventArgs) Handles Btn_Login.Click



        Dim RetVal As Integer

        ' Check all information required has been inputted
        If Txt_Username.Text = "" Then
            MsgBox("Please enter a username.", vbOKOnly, "Required Data")
            Txt_Username.Select()
            Exit Sub
        End If

        If Txt_Password.Text = "" Then
            MsgBox("Please enter a password.", vbOKOnly, "Required Data")
            Txt_Password.Select()
            Exit Sub
        End If

        'If connection.State = ConnectionState.Closed Then
        '    connection.Open()
        'End If

        Dim cmd As New OleDbCommand("SELECT * FROM User where [username] = ? AND [Password] = ?", connection)
        cmd.Parameters.AddWithValue("@p1", Txt_Username.Text)
        cmd.Parameters.AddWithValue("@p1", Txt_Password.Text)
        connection.Open()
        RetVal = CInt(cmd.ExecuteScalar())

        If (RetVal = 1) Then
            ' Login successful
            MsgBox("Successful login")

            My.Settings.savedUsername = Txt_Username.Text
            My.Settings.savedPassword = Txt_Password.Text
            My.Settings.Save()
        Else
            ' Login unsuccessful
            intLogonAttempts = intLogonAttempts + 1

            If intLogonAttempts >= 3 Then
                MsgBox("You do not have access to this database. Please contact admin.", vbCritical, "Restricted Access!")
                Application.Exit()
                Exit Sub
            Else
                MsgBox("Password Invalid. Please Try Again", vbOKOnly, "Invalid Entry!")
                Txt_Password.Select()
            End If
        End If
    End Sub

但是,当我的代码达到“ RetVal = CInt(cmd.ExecuteScalar())”时,将返回以下错误;

System.Data.OleDb.OleDbException:'FROM子句中的语法错误。'

我在这里怎么了?我以为这是由于sql语句引起的,但是我很确定自己有正确的答案吗?

vb.net access
1个回答
0
投票

我忘记了表名用户周围的[] ...

但是为了不浪费这篇文章,人们是否能够建议这也许是执行登录的最佳方法,还是那里有更好的解决方案?

© www.soinside.com 2019 - 2024. All rights reserved.