sqlite:看起来像moveToNext工作,不需要moveToFirst

时间:2011-08-21 19:59:49

标签: android sqlite

创建标准SQLite游标后,我使用以下命令迭代条目:

while (cursor.moveToNext()) {
}

正在正确处理所有行。 我读过的所有文档都说明您需要发出moveToFirst()来确保 您指向光标集的第一个条目。

这是否有效,即使它不应该, 和另一个版本可能没有相同的处理?

1 个答案:

答案 0 :(得分:43)

不,这是正常的。 Cursor从行索引-1开始(在第一行之前)。如果Cursor引用多行,则使用您建议的while循环遍历它们是首选方法。它将调用moveToNext(),它将您移动到索引0(第一行),然后从那里开始。

如果您的Cursor仅引用一行,则可以在读取数据之前调用moveToFirst()以确保您使用的是有效索引。 moveToFirst()moveToNext()在首次创建Cursor且索引为-1时具有相同的效果。