コンパクトなフレームワーク アプリケーションで sqlite を使用して、システムにイベントを記録しています。System.Data.SQLiteも使用しています。イベントには、発生時刻を表すタイム スタンプがあります。このタイムスタンプをティックとしてテーブルに保存しています。この列に加えて、テーブルには整数/テキスト型の別の 5 つの列が含まれています。以下はテーブルスキーマです
CREATE TABLE T1 (TimeStamp INTEGER, Col2 INTEGER, Col3 INTEGER, Col4 INTEGER,
Col5 INTEGER, Col6 TEXT, PRIMARY KEY(TimeStamp DESC));
以下のクエリでADOを使用して、2つのタイムスタンプ間のデータをクエリしています
SELECT TimeStamp,Col1,Col2,Col3,Col4,Col5 FROM T1 WHERE TimeStamp
BETWEEN @startDate AND @endDate LIMIT 2000;
ユーザーが指定したタイム スタンプをティックに変換し、'@startDate' と '@endDate' のパラメーター値として送信しています。
上記のクエリを実行した後、while ループを使用して SqLiteDataReader を反復処理し始めました。この while ループは決して出てこず、無限に実行し続けることがわかりました。理想的には、2000 レコードを読み取った後に終了する必要があります。以下はコードスニペットです。
SQLiteDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
:
: Fill the data from column into Event class object
:
}
誰かが同じ問題に直面したかどうか教えてください。
編集:-調査の結果、この問題は完全にロードされたシステムで発生することがわかりました。フルロードシステムの環境をシミュレートし、試着しました。