使用AutoNumber PK插入Access DB并获取Insert语法错误

Sea*_*n P 0 database vb.net ms-access insert autonumber

我试图插入访问数据库,PK是由DB生成的自动编号.我收到插入语句的语法错误,不知道为什么.如果可能,我想在同一语句中返回自动编号值.

这是我到目前为止所得到的.

   Dim cn As OleDbConnection
    Dim cmd As OleDbCommand
    Dim str As String

    Try
        cn = New OleDbConnection("Provider=microsoft.Jet.OLEDB.4.0;Data Source=G:\Sean\BMSBonder3_0.mdb;")
        cn.Open()
        str = String.Format("Insert into Bonder(BonderName, BonderConfig, Date, User) values ('{0}', '{1}', '{2}', '{3}')", addBonder.BonderName _
                    , xmlString, Date.Now.ToString, Environment.UserName)
        MsgBox(str)
        cmd = New OleDbCommand(str, cn)
        cmd.ExecuteNonQuery()
        cn.Close()

    Catch ex As Exception
        MsgBox(ex.Message)
        Return False
    End Try

    Return Nothing
Run Code Online (Sandbox Code Playgroud)

显然在VB.Net中编码.在查询中,除自动编号字段外,设置所有字段值.

Har*_*ode 5

我敢向甜甜圈打赌这个问题是因为日期和用户都是保留字.将它们括在方括号中:

str = String.Format("Insert into Bonder(BonderName, BonderConfig, [Date], [User]) ....
Run Code Online (Sandbox Code Playgroud)

更好的是,将数据库中的字段重命名为非保留字以防止进一步的麻烦.