2010-06-28 25 views
1

在SQLite中,使用标准的C接口 - 是否有一个简单的方法(即使有点hack-ish)在结果集中迭代向后?我试图避免自己缓存结果。sqlite:转到结果集中的上一条记录?

我想过的一个解决方案是执行一个额外的查询,它会返回相反的结果,但我不确定它会有多高效。

+0

“避免缓存结果我自己”你的意思是避免使用'sqlite3_get_table()'? – 2010-06-28 08:11:13

回答

2

不,sqlite迭代代码是单向的。我甚至都不知道要达到你想要的效果,除了自己缓存一切:-)。

逆向查询的方法可能会工作一点点,但您无法再让反向查询向前(向后),而不会使正常查询向后退避。

一旦您的转发查询已经到了第50行,并且您的反向查询已经到了第20行,那么第21行到第49行将无法访问它们。所以你不能真正将它用作通用浏览方法。

假设您正在尝试实现分页机制,例如每次显示五十条记录并允许用户通过行向前和向后滚动,那么您可能只需采取历史悠久的方法来运行多个查询,每次只查找50行。例如:

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 

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

相关问题