2010-06-28 29 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 

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

相關問題