0

テーブルからデータを取得しようとしています。このクエリはmysqlで正常に実行されますが、 asp.net c#クラス ファイルで実行中に例外がスローされます。

string sqlQuery = "SET @c:=0;
SELECT * FROM (SELECT TimeStamp, FwdHr, W , @c:=@c+1 as counter
  FROM Meter_Data WHERE TimeStamp >= @fromTime AND TimeStamp <= @toTime
  AND MeterID = @meterID" + " AND DeviceID = @deviceID) as tmp
WHERE counter % 20 =1 ORDER BY TimeStamp";

それをどのように定義するのです@cか?? SQLサーバーで正常に実行されていたため

4

3 に答える 3

0

実行しているのは、単一のクエリではなく、複数のステートメントです。

@c最初に設定する形式も、パラメータ化されたクエリに使用される形式と同じです。

c# は、@c送信したパラメーターのリストで を検索します。これが見つからないため、エラーが発生します。

パラメータを受け取って結果を返す mysql のルーチンを作成する方がよいでしょう。変数@cはルーチンの内部になります。

于 2013-05-30T06:27:10.613 に答える
0

単純なクエリで実行できます。bcz タイム スタンプは int で、1902020222、1902020223、...のように増分します。

 string sqlQuery = "SELECT TimeStamp, FwdHr, W FROM Meter_Data WHERE TimeStamp >= @fromTime AND TimeStamp <= @toTime AND MeterID = @meterID" +
                        " AND DeviceID = @deviceID AND TimeStamp%20 = 0 ORDER BY TimeStamp;";
于 2013-05-30T07:39:37.117 に答える