为什么VB.Net在运行Access更新查询时抛出错误,而该查询在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'.'

Btw:在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

如果你想运行"existing"在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。

相关内容

  • 没有找到相关文章

最新更新