【问题标题】:How to delete all data in table and insert new records in an Access database with VB.NET?如何使用VB.NET删除表中的所有数据并在Access数据库中插入新记录?
【发布时间】:2014-01-01 14:05:22
【问题描述】:

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

【问题讨论】:

  • 如果您将字段名称,“name”更改为“fld1”,“value”更改为“fld2”,并修改您的 VB.Net 代码以使用这些新的字段名称,您是否仍然明白错误?或者可能是另一个错误?
  • 更改字段名称的代码它的工作,但我不知道为什么!!!!
  • NameValue 都是 reserved words,因此不是 Access db 对象名称的好选择。

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


【解决方案1】:
  1. 制作 Access db 文件的备份副本。
  2. 重命名MyTable中的这两个字段:namefld1;和 valuefld2
  3. 调整您的 VB.Net 代码以使用这些名称。

您表示这些步骤消除了错误。

问题在于namevalue 都是reserved words。在某些情况下,Access db 引擎可以毫无怨言地接受保留字作为字段名称。然而,当涉及到 OleDb 时,它似乎就不那么宽容了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多