如何删除表中的所有数据并使用VB.NET在Access数据库中插入新记录?

时间:2013-12-13 17:40:18

标签: vb.net ms-access dataset oledb oledbcommand

我正在尝试从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()

1 个答案:

答案 0 :(得分:1)

  1. 制作Access数据库文件的备份副本。
  2. MyTable name 中的这两个字段重命名为 fld1 ;和 fld2
  3. 调整您的VB.Net代码以使用这些名称。
  4. 您表示这些步骤消除了错误。

    问题在于namevalue都是reserved words。在某些情况下,Access数据库引擎可以接受保留字作为字段名称而不会抱怨。然而,当OleDb参与其中时似乎不太宽容。

    理想情况下,请避免使用Access数据库对象名称的保留字。该链接页面包含指向免费实用程序(DbIssueChecker.zip)的链接,您可以使用该实用程序检查Access数据库文件中的问题名称和其他问题。