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



创建标准SQLite游标后,我使用:

遍历条目
while (cursor.moveToNext()) {
}

所有行都被正确处理。我读过的所有文件都说你需要签发moveToFirst()来确保指向游标集的第一个条目。

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

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

如果你的Cursor只引用了一行,你可以在读取数据之前调用moveToFirst()来确保你在一个有效的索引上。当Cursor第一次创建时,moveToFirst()moveToNext()具有相同的效果,并且索引为-1。

最新更新