【问题标题】:Error when executing SQL执行 SQL 时出错
【发布时间】:2010-03-05 19:18:54
【问题描述】:

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

【问题讨论】:

    标签: sql ms-access sql-delete


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          Access/Jet/ACE 对 GUID 不太友好。迈克尔·卡普兰多年前写过这篇文章:

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

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

          【讨论】:

            猜你喜欢
            • 2018-02-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-14
            • 2013-04-24
            • 2013-10-07
            • 2013-07-22
            相关资源
            最近更新 更多