2

我找不到在sqlite3_stmt.

我有一个输入视图让用户输入和执行 SQL,但结果可能有大量记录。我只想显示一部分结果。

例如:我在 stmt 中有 20000 行。但我想显示前 2000 行(0-2000)。当用户单击下一个按钮时,我想显示第二个 2000 行(2000-4000)。当用户单击上一个按钮时,我希望显示倒带。所以我想在stmt中寻找。但我找不到一些 SQLite3 函数来寻找 stmt。

我使用 C/C++ 接口。

4

1 回答 1

2

SQLite 动态计算语句的返回值。移动到另一行的唯一sqlite3_step方法是调用; 不可能向后移动。

您可以读取所有行并将它们保存在某个地方,但是当它们太多时这变得不切实际。

您可以使用LIMIT/OFFSET 子句执行单独的查询,以将结果限制在当前窗口中。但是,当偏移值变大时,这会变得低效,因为 SQLite 仍然必须计算所有这些记录。

要实现滚动游标,您应该保存页面的最后(/第一个)记录,并要求数据库在该记录之后(/之前)返回下一个(/上一个)2000 条记录。这在 SQLite wiki 中有详细解释

于 2013-04-28T05:59:53.253 回答