我试图理解为什么他们会在一行中的第一个位置之前开始光标,以及为什么它会在最后一个位置之后结束。这样做有继承优势吗?
例如:
public abstract int getPosition ()
自:API 级别 1 返回行集中游标的当前位置。该值从零开始。当第一次返回行集时,光标将位于位置 -1,即第一行之前。返回最后一行后,再次调用 next() 将使光标离开最后一个条目,位于 count() 的位置。
返回当前光标位置。
谢谢你。
我试图理解为什么他们会在一行中的第一个位置之前开始光标,以及为什么它会在最后一个位置之后结束。这样做有继承优势吗?
例如:
public abstract int getPosition ()
自:API 级别 1 返回行集中游标的当前位置。该值从零开始。当第一次返回行集时,光标将位于位置 -1,即第一行之前。返回最后一行后,再次调用 next() 将使光标离开最后一个条目,位于 count() 的位置。
返回当前光标位置。
谢谢你。
因为Cursor
不保证 a 会填充行。如果你Cursor
从一个有 0 行的数据库中得到一个返回,那么初始位置为 0 没有意义,因为位置 0 没有行。
所以你可以这样做:
Cursor c = db.rawQuery(...);
while (c.moveToNext()) {
// deal with one row at a time
}
这是迄今为止迭代游标结果的最巧妙方法(请参阅迭代 Android 游标的最佳方法是什么?),如果它没有在第一行之前开始,它将无法工作。
AndroidSQLiteCursor
是原生 SQLite 数据库游标的包装对象,它是一种控制结构,可让您遍历数据库中的记录。
我假设,在调用setPosition
或moveToFirst
本地游标之前,甚至不会将查询结果加载到内存中以节省空间。