2016-09-23 109 views
-1

這在mysql中很簡單,這要歸功於mysql_num_rows,但在sqlite3中不存在這種等價物。因此,問題是如何知道當前行是否是最後一行。SQLite3 - 如何知道當前行是否是最後一行

像以下重新排列沒有幫助,因爲任何以前綁定sqlite3_step無效後。

sqlite3_prepare_v2() 
int fetched = 0; 
int last = 0; 
while (sqlite3_step(statement) == SQLITE_ROW) { 
     // this is the previous row 
     if(fetched) { 
      process(data, last); 
     } 
     fetched = 1; 
     data = sqlite3_column_text(); 
} 
last = 1; 
if(fetched) 
    process(data, last); 

執行查詢兩次(一個計數)是一個微不足道的解決方案,但這不是我正在尋找的。

任何想法?提前致謝。

+0

如果您沒有使用'WITHOUT ROWID'子句創建表,'SELECT Max(ROWID)AS LastRow'應該爲您提供最後創建的行。 AS LastRow是可選的。 –

回答

0

SQLite只在需要時計算下一個輸出行。 因此,不可能確定是否可以獲得另一行,而不實際嘗試進入該行。

如果您的代碼真的需要知道當前行是否是最後一行,那麼您必須複製該行中的所有數據。

+0

謝謝,這就是我們現在正在做的事情,但效率不高,因此正在檢查是否有一種我們忽略的方式。 – yumoji

相關問題