当我尝试执行下面的代码时出现以下错误。我已经添加了我传递的SQL字符串。我错过了什么?
错误:
查询表达式'TOURID =中的语法错误(缺少运算符) 25e5eed3-ea84-4c30-a660-2c880253da60'
我的查询,
DELETE * FROM TOURS WHERE TOURID = 25e5eed3-ea84-4c30-a660-2c880253da60;
我的代码,
Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\_Development\Data\filename.accdb;Persist Security Info=False;"
Dim DBConnection As New System.Data.OleDb.OleDbConnection(connectionString)
Try
DBConnection .Open()
Dim cmd As New System.Data.OleDb.OleDbCommand(sql, DBConnection )
Dim sqlAdapterTOURS As New System.Data.OleDb.OleDbDataAdapter(cmd)
cmd.CommandType = CommandType.Text
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
DBConnection .Close()
End Try
答案 0 :(得分:5)
在使用GUID时需要引用:
DELETE *
FROM TOURS
WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60';
答案 1 :(得分:3)
您的值应该用单引号括起来,如下所示:
DELETE * FROM TOURS WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60';
答案 2 :(得分:1)
猜猜:您的GUID类型条目应该引用,也许?:
DELETE FROM TOURS WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60'
答案 3 :(得分:1)
Access / Jet / ACE对GUID不是很友好。 Michael Kaplan多年前写过这篇文章:
Replication and GUIDs, the Good, the Bad, and the Ugly
根据上下文,您可能需要使用VBA函数来处理GUID,即StringFromGUID()和GUIDFromString()。但是,我不确定在SQL上下文中你究竟要做什么。我知道你不能在两个GUID字段之间进行连接(你必须使用隐式连接,即使用WHERE子句)。