gpt4 book ai didi

c# - Compact Framework 3.5 上的 System.Data.SQLite 问题

转载 作者:行者123 更新时间:2023-11-30 18:36:05 24 4
gpt4 key购买 nike

我在我的紧凑型框架应用程序中使用 sqlite 来记录系统中的事件。我也在使用 System.Data.SQLite .该事件有时间戳来描述它发生的时间。我将这个时间戳作为 Ticks 存储在我的表中。除此列外,该表还包含另外 5 列整数/文本类型。下面是表架构

CREATE TABLE T1 (TimeStamp INTEGER, Col2 INTEGER, Col3 INTEGER, Col4 INTEGER,
Col5 INTEGER, Col6 TEXT, PRIMARY KEY(TimeStamp DESC));

我正在使用带有以下查询的 ADO 查询两个时间戳之间的数据

SELECT TimeStamp,Col1,Col2,Col3,Col4,Col5 FROM T1 WHERE TimeStamp 
BETWEEN @startDate AND @endDate LIMIT 2000;

我正在将用户提供的时间戳转换为 Ticks,并将它们作为“@startDate”和“@endDate”的参数值发送。

在执行上述查询后,我开始使用 while 循环 遍历 SqLiteDataReader,我发现这个 while 循环永远不会出现并继续无休止地执行。理想情况下它应该结束阅读 2000 条记录后。以下是代码片段。

SQLiteDataReader dr = cmd.ExecuteReader();

while(dr.Read())
{
:
: Fill the data from column into Event class object
:
}

如果有人遇到同样的问题,请告诉我。

编辑:- 经过调查,我发现这个问题出现在满载的系统上。我模拟满载系统的环境并进行了尝试。

最佳答案

你总是可以用另一种方式解决它,从 SQL 中删除 LIMIT 2000 并像这样稍微改变你的读取逻辑:

var dr = cmd.ExecuteReader();
var rows = 0;

while(dr.Read())
{
if(++rows > 2000) break;

//
// Fill the data from column into Event class object
//
}

关于c# - Compact Framework 3.5 上的 System.Data.SQLite 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14119713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com