创建标准SQLite游标后,我使用:
遍历条目while (cursor.moveToNext()) {
}
所有行都被正确处理。我读过的所有文件都说你需要签发moveToFirst()
来确保指向游标集的第一个条目。
这是工作,即使它不应该,另一个版本可能没有相同的处理?
不,这是正常工作。Cursor
从行索引-1开始(在第一行之前)。如果Cursor
引用多行,那么使用您建议的while
循环遍历它们是首选方法。它将调用moveToNext()
,它将您移动到索引0(第一行),并从那里开始。
如果你的Cursor
只引用了一行,你可以在读取数据之前调用moveToFirst()
来确保你在一个有效的索引上。当Cursor
第一次创建时,moveToFirst()
和moveToNext()
具有相同的效果,并且索引为-1。