为什么 VB.Net 当 运行 Access 更新查询在 Access 中正常运行时会抛出错误

Why does VB.Net throw an error when running an Access update query while it runs properly in Access

我正在 运行在 VB.Net 中执行 Access 更新查询。

dbCustSpec_ADO.Execute("table_upt")

我 运行 很好,除了下面的“更新到”声明

[table].[field1] & [table].[field2]

以下正常工作

[table].[field1]

下面也是

[table].[field2]

只有当我连接两个字段时 VB.Net 抛出错误:

System.Runtime.InteropServices.COMException: 'Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.'

顺便说一句:在 Access 中调用查询时串联工作正常。

我的问题是: 如何在从 VB.net

调用它时连接两个字段以使其成为 运行

不清楚,您在这里使用 .net oleDB 提供程序吗?

或者您正在创建 Access 数据库引擎的实例?

你最好像这样使用 oleDB:

Imports System.Data.OleDb

然后您要更新的代码可能如下所示:

    Using conn As New OleDbConnection(My.Settings.TESTAce)
        Dim strSQL As String = "UPDATE tblHotels SET FullName = FirstName + ', ' + LastName"
        Using cmdSQL As New OleDbCommand(strSQL, conn)
            conn.Open()
            cmdSQL.ExecuteNonQuery()
        End Using
    End Using

如果您想 运行 Access 中的“现有”更新查询? 它们被认为是存储过程。假设我们在 Access 中保存了名为

的更新查询
qryFirstLast

然后上面的代码 运行 该查询将是:

    Using conn As New OleDbConnection(My.Settings.TESTAce)
        Dim strSQL As String = "qryFirstLast"
        Using cmdSQL As New OleDbCommand(strSQL, conn)
            conn.Open()
            cmdSQL.CommandType = CommandType.StoredProcedure
            cmdSQL.ExecuteNonQuery()
        End Using
    End Using

注意我们如何设置命令类型 = StoredProcedure。