为什么 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。
我正在 运行在 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。