Er:使用 MC Access 2016、oleDb 4.0 的 INSERT INTO 语句 Visual Basic 2017 中的语法错误

Er : Syntax error in INSERT INTO statement Visual Basic 2017 using MC Access 2016 , oleDb 4.0

我正在尝试在我的访问数据库中插入数据,但我得到了一个 Syntax error in INSERT statemnt exception.Can 有人请帮我解决这个错误......也许我的插入语句不正确?

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    Try
        If cmbTo.Text = "" Or cmbfrom.Text = "" Or cmbDay.Text = "" Or cmbMonth.Text = "" Or cmbYear.Text = "" Or cmbListBus.Text = "" Then
            MsgBox("Please Insert Your Destination")
        Else
            Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Hacke\source\repos\Student\Database\studentdatabase.mdb")
            Dim insert As String = "INSERT INTO [BUSTICKET] VALUE ('" & cmbfrom.Text & "','" & cmbTo.Text & "','" & cmbDay.Text & "','" & cmbMonth.Text & "','" & cmbYear.Text & "','" & cmbListBus.Text & "');"


            Dim cmd As New OleDbCommand(insert, conn)
            conn.Open()
            cmd.ExecuteNonQuery()
            MsgBox("Success")
            conn.Close()


        End If
    Catch ex As Exception
        MsgBox("Err : " & Err.Description)
    End Try
End Sub

结束Class

您 post 中的一些错误使我们 understand.Anyway 有点困难,我已经提交了对您 post 的编辑。

到目前为止我看到的问题是您还没有定义要插入数据的 table 例如,如果您的 table 名称是 Students ,那么示例 sql/OleDb 语句可能类似于

"Seletct * from Students",ConnectionString

注意: 在下面的语句中,我使用了 (*) 这意味着我不是 selecting/targeting 任何特定的 column/cell,而是所有 columns/cells.此语句用于各种目的,特别是在从数据库中检索数据时。

但是,您的动机是向数据库中插入数据。

任何数据库软件 (AFAIK) 的 INSERT 语句必须包含您要定位的 Table 名称,Column/Cell headers/names。让我们假设您的 Table name is Students 并且您想在 FirstName,LastNmae columns.Then 中插入数据,示例 Insert 语句可能如下所示:

"Insert into Students(FirstName,LastName)values(@fname,@lname)", ConnectionString

现在,请注意 我不会直接在 statement.you 中添加值,如果您 want.However 可以这样做,在此示例插入语句中,我宁愿定义一些参数名称,如 @Fname@Lname。这将在稍后用于最终将数据插入 table 的列。

现在,如果你使用我的示例代码,你必须从你的 application.We 中为这些参数分配一些值,现在有 2 个参数,它们是 @Fname@Lname。我们现在需要向 them.Let 添加文字值,假设这些值来自 TextBoxes.

MyOledbCommand.Add("@Fname",OledbDatatype.VarChar).Value = FNameTxtBox.Text

'Or you can use :

MyOledbCommand.AddWithValue("@Fname",FNameTxtBox.Text)

完成将文本框(或某些字符串或其他内容)分配为值后,是时候执行命令以便数据 inserts.For 我们通常调用 :

MyOleDbCommand.ExecuteNonQuery()

所以,这是一个完整的示例:

Dim con as New oleDbConnection = "ConnectionStringHere"
Con.open
Dim MyOleDbCommand as new OleDbCommand("Insert into Students(FirstName,LastName)values(@fname,@lname)", con)
MyOledbCommand.AddWithValue("@Fname",FNameTxtBox.Text)
MyOledbCommand.AddWithValue("@Lname",LNameTxtBox.Text)
MyOleDbCommand.ExecuteNonQuery
Con.Close

希望这对您有所帮助:)