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

cha*_*est 19 sqlite android

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

while (cursor.moveToNext()) {
}
Run Code Online (Sandbox Code Playgroud)

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

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

Gle*_*ger 43

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

如果您Cursor只引用一行,则可以moveToFirst()在读取数据之前调用它,以确保您使用的是有效索引.二者moveToFirst()moveToNext()具有相同的效果时,Cursor在第一次创建并在索引-1.

  • +1,非常棒的分析.这也是[此处记录](http://developer.android.com/reference/android/database/Cursor.html#getPosition()). (4认同)