2010-03-05 83 views
0

当我尝试执行下面的代码时,出现以下错误。我添加了我传递的SQL字符串。我错过了什么?执行SQL时出错

错误:

Syntax error (missing operator) in query expression '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 

回答

5

与GUIDS工作时,这样你需要使用引号:

DELETE * 
FROM TOURS 
WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60'; 
3

你的值应该用单引号括起来,就像这样:

DELETE * FROM TOURS WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60'; 
1

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

DELETE FROM TOURS WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60' 
1

访问/喷气/ ACE不非常GUID友好。迈克尔·卡普兰前写了一篇关于这个多年:

Replication and GUIDs, the Good, the Bad, and the Ugly

根据上下文,您可能需要使用VBA函数与GUID的工作,即StringFromGUID()和GUIDFromString()。不过,我不确定你在SQL上下文中究竟需要做什么。我知道你不能在两个GUID字段之间进行连接(你必须使用隐式连接,也就是使用WHERE子句)。