我正在尝试从VB.NET中的Access(* .mdb)数据库中的表中删除所有数据,然后在其中重新插入新数据但是在执行时我收到错误“INSERT INTO语句中的语法错误”以下代码:
Imports System
Imports System.Data
Imports System.Data.SqlClient
...
'test.mdb file
'with a table "MyTable"
'with two fields:
'"name" (Memo), "value" (Memo)
Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
dbSource = "Data Source = C:\Users\Max\Desktop\test.mdb"
con.ConnectionString = dbProvider & dbSource
con.Open()
sql = "SELECT * FROM MyTable"
'select data from database, fill and clear dataset to get the table schema
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "MyTable")
ds.Clear()
'add a new row in the dataset
Dim dsNewRow As DataRow = ds.Tables("MyTable").NewRow()
dsNewRow.Item("name") = "TESTNAME"
dsNewRow.Item("value") = "TESTVALUE"
ds.Tables("MyTable").Rows.Add(dsNewRow)
'update the database
Dim objCommandBuilder As New OleDb.OleDbCommandBuilder(da)
da.Update(ds, "MyTable")
ds.Dispose()
da.Dispose()
con.Close()
con.Dispose()
答案 0 :(得分:1)
您表示这些步骤消除了错误。
问题在于name
和value
都是reserved words。在某些情况下,Access数据库引擎可以接受保留字作为字段名称而不会抱怨。然而,当OleDb参与其中时似乎不太宽容。
理想情况下,请避免使用Access数据库对象名称的保留字。该链接页面包含指向免费实用程序(DbIssueChecker.zip)的链接,您可以使用该实用程序检查Access数据库文件中的问题名称和其他问题。