Qt查询顶部数字记录选择

时间:2012-01-13 16:13:16

标签: c++ sql sql-server qt

我有一个查询应该使用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是传入的unsigned short。执行时我收到此错误:

  

无法执行语句:“[Microsoft] [ODBC SQL Server驱动程序] [SQL   服务器]'@ P1'附近的语法不正确。 [Microsoft] [ODBC SQL Server   驱动程序] [SQL Server]语句无法准备。 QODBC3:无法解决   执行语句“”SELECT TOP? deviceId,纬度,   经度,[timeStamp] FROM位置WHERE [地址] =''   ORDER BY [timeStamp] DESC“

我看不出错误是什么。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

使用变量执行select top时,最高值需要在括号中。

试试这个:

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