2016-09-23 14 views
-1

これはmysql_num_rowsのおかげでmysqlでは些細なことですが、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); 

クエリを2回実行することは簡単な解決策ですが、それは私が探しているものではありません。

アイデア?前もって感謝します。

+0

'WITHOUT ROWID'節を使用してテーブルを作成しなかった場合、' SELECT Max(ROWID)AS LastRow'はあなたに最後に作成された行を与えます。 'AS LastRow'はオプションです。 –

答えて

0

SQLiteは、必要なときにだけ次の出力行を計算します。 実際にその行にステップインしないで別の行を取得できるかどうかを調べることはできません。

現在の行が最後の行かどうかをコードで確認する必要がある場合は、その行のすべてのデータのコピーを作成する必要があります。

+0

ありがとうございました。私たちが今やっていることですが効率的ではないので、見落とした方法があるかどうかをチェックしていました。 – yumoji

関連する問題