我收到一个错误:vb中查询表达式中的语法错误(缺少运算符)

时间:2015-04-02 00:32:05

标签: vba ms-access

这是SQL。

dtaadpResult.SelectCommand.CommandText = " SELECT * FROM tblResult WHERE EventID =" & EventID(Counter1) & " AND ORDER BY Time DESCENDING"

当我尝试填充数据集时会发生这种情况。

dtaadpResult.Fill(dtasetSD, "tblResult")

我使用MS访问,是否添加了paranthesis?我该怎么做

1 个答案:

答案 0 :(得分:1)

您的代码可能容易受到SQL注入攻击。使用参数而不是字符串连接。

在完成强制性警告后,请在格式化之后查看您的查询文本:

SELECT
    *
FROM
    tblResult
WHERE
    EventID = @eventId
    AND
ORDER BY
    Time DESCENDING

问题是你有一个AND语句后跟ORDER BY,而你应该有一个谓词子句。

添加另一个子句,或删除AND运算符关键字。

另外,更多的原型:

  1. 避免使用匈牙利语表示法,并考虑使用复数作为表格名称(即使用Results代替tblResult
  2. 代码中嵌入的长行SQL难以阅读,请考虑格式化SQL并改为使用多行字符串。
  3. 使用参数化查询,而不是强烈关注生成SQL
  4. 如果您正在执行SELECT查询并将其传递给DataAdapter只是为了填补DataTableDataSet,那么您将浪费内存和CPU周期使用DataReader代替:它更快(并且具有相当低的内存开销)。