执行SQL时出错

时间:2010-03-05 19:18:54

标签: sql ms-access sql-delete

当我尝试执行下面的代码时出现以下错误。我已经添加了我传递的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 个答案:

答案 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子句)。