2016-09-23 111 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

相关问题