创建标准SQLite游标后,我使用以下命令迭代条目:
while (cursor.moveToNext()) {
}
正在正确处理所有行。
我读过的所有文档都说明您需要发出moveToFirst()
来确保
您指向光标集的第一个条目。
这是否有效,即使它不应该, 和另一个版本可能没有相同的处理?
答案 0 :(得分:43)
不,这是正常的。 Cursor
从行索引-1开始(在第一行之前)。如果Cursor
引用多行,则使用您建议的while
循环遍历它们是首选方法。它将调用moveToNext()
,它将您移动到索引0(第一行),然后从那里开始。
如果您的Cursor
仅引用一行,则可以在读取数据之前调用moveToFirst()
以确保您使用的是有效索引。 moveToFirst()
和moveToNext()
在首次创建Cursor
且索引为-1时具有相同的效果。