c - sqlite:转到结果集中的上一条记录?

标签 c sqlite iteration

在 SQLite 中,使用标准 C 接口(interface)——是否有一种简单的方法(即使有点 hack-ish)在结果集中向后迭代?我试图避免自己缓存结果。

我想到的一个解决方案是执行一个额外的查询来返回相反的结果,但我不确定它的效率如何。

最佳答案

不,sqlite 迭代代码专门是单向的。我什至不知道实现你想要的东西的黑客方法,当然除了自己缓存它:-)。

反向查询的方法可能有点用,但你不能让反向查询“向前”(向后),就像你不能让正常查询向后一样。

一旦您的正向查询到达第 50 行并且您的反向查询到达第 20 行,第 21 到 49 行将对它们都无法访问。因此,您不能真正将其用作通用浏览方法。

假设您正在尝试实现一种分页机制,例如一次显示五十条记录并允许用户在行中前后滚动,您可能只需要求助于运行许多查询的历史悠久的方法,一次一个,每次只检索五十行。像这样的东西:

select f1, f2, f3 from tbl limit 50 offset 0
select f1, f2, f3 from tbl limit 50 offset 50
select f1, f2, f3 from tbl limit 50 offset 100

等等。您可以使用偏移量和限制将窗口限制在 table 上。

关于c - sqlite:转到结果集中的上一条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3130833/

相关文章:

android - SQLiteDatabase 插入或替换(如果更改)

c - 创建的 C 数组的 Objective-C 初始值

database - golang sqlite 数据库连接池

在 while 语句中将旧变量值与新值进行比较?

mysql - Rails,如何将数据从开发 sqlite3 数据库迁移到生产 MySQL 数据库?

c# - 如何在同时删除项目的同时遍历列表?

python - 需要一个脚本来遍历文件并执行命令

javascript - for 循环中的 Nightwatch 执行命令出现乱序

c - 为什么 C 关键字区分大小写?

c - 知道为什么 x 变为 0 然后为 nan