2012-01-13 7 views
1

Qtフレームワークを使用して実際にSQLデータベースに要求を行うレコードの先頭X個を要求するクエリがあります。ハードコーディングされた数値を配置するとクエリが成功したことを確認しましたが、バインドしようとするとエラーが発生します。Qtクエリのトップレコードレコードの選択

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

変数numberMissingは、渡された署名のない短いです実行されると、私はこのエラーが表示されます。

Unable to execute statement: "[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '@P1'. [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. QODBC3: Unable to execute statement" "SELECT TOP ? deviceId , latitude , longitude , [timeStamp] FROM Positions WHERE [address] = '' ORDER BY [timeStamp] DESC"

私はエラーがどうなるかが表示されません。

答えて

1

変数を使用してselect topを実行すると、先頭の値はカッコで囲む必要があります。私は、OracleスタイルのパラメータをサポートQtのを、使用してい

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

Oracleパラメータは、先に:と表示されます.SQLServerの最も近い同等語は、@となります。 :numberToSelect@numberToSelectに変更してみてください。

+0

はこれを試してみてください。 – JadziaMD