0

当我尝试执行下面的代码时出现以下错误。我也添加了我传递的 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
4

4 回答 4

5

像这样使用 GUIDS 时需要引用:

DELETE * 
FROM TOURS 
WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60';
于 2010-03-05T19:21:00.073 回答
3

您的值应该用单引号括起来,如下所示:

DELETE * FROM TOURS WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60';
于 2010-03-05T19:21:08.070 回答
1

猜猜:应该引用您的 GUID 类型条目,也许?:

DELETE FROM TOURS WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60'
于 2010-03-05T19:21:47.103 回答
1

Access/Jet/ACE 对 GUID 不太友好。迈克尔·卡普兰(Michael Kaplan)多年前曾写过:

复制和 GUID,好的、坏的和丑陋的

根据上下文,您可能需要使用 VBA 函数来处理 GUID,即 StringFromGUID() 和 GUIDFromString()。不过,我不确定您必须在 SQL 上下文中具体做什么。我知道您不能在两个 GUID 字段之间进行连接(您必须使用隐式连接,即使用 WHERE 子句代替)。

于 2010-03-05T21:02:06.423 回答