【问题标题】:Qt Query Top Number Record SelectingQt查询前几条记录选择
【发布时间】:2012-02-09 20:02:43
【问题描述】:

我有一个查询,它应该使用 Qt 框架请求前 X 条记录,以实际向 SQL 数据库发出请求。我已经验证,当我放置一个硬编码的数字时,查询是成功的,但是当我尝试绑定它时,我得到了一个错误。

query.prepare("SELECT TOP :numberToSelect"
              "    deviceId"
              "    , latitude"
              "    , longitude"
              "    , [timeStamp]"
              "    FROM Positions "
              "    WHERE [address] = ''"
              "    ORDER BY [timeStamp] DESC");
query.bindValue(":numberToSelect", numberMissing);

变量 numberMissing 是传入的无符号短整数。执行时我收到此错误:

无法执行语句:“[Microsoft][ODBC SQL Server Driver][SQL 服务器]'@P1' 附近的语法不正确。 [微软][ODBC SQL 服务器 驱动程序][SQL Server]无法准备语句。 QODBC3:无法 执行语句" "SELECT TOP ? deviceId , 纬度 , 经度,[timeStamp] FROM Positions WHERE [address] = '' ORDER BY [timeStamp] DESC"

我看不出错误是什么。

【问题讨论】:

    标签: c++ sql sql-server qt


    【解决方案1】:

    Oracle 参数用前面的 : 表示 - SQLServer 最接近的等效参数是 @ 符号。尝试将:numberToSelect 更改为@numberToSelect

    【讨论】:

    • 我用的是Qt,它支持Oracle样式参数。
    【解决方案2】:

    当您使用变量执行select top 时,顶部值需要放在括号中。

    试试这个:

    query.prepare("SELECT TOP (:numberToSelect)"
                  "    deviceId"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 2013-09-26
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      相关资源
      最近更新 更多