我正在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。