如何详细实现Android数据库游标?

Ole*_*rov 6 java android cursor

我对CursorAndroid中的实现细节很感兴趣.我知道基本上它只是一个接口,它提供对数据库查询返回的结果集的随机读写访问.我想知道具体的Cursor实现:

  1. 它是一种存储数据库结果集的某种数据结构吗?
  2. 或者它只是一个只处理一行的结构?

Sim*_*iak 6

是一些存储数据库结果集的数据结构

是.

或者它是一些只处理一行的结构?

不完全是.游标可以根据源查询处理一行或多行.游标是数据的映射,将包含与源(选择)查询返回的行数.因此,如果查询返回100行,则这些行将插入Cursor,而Cursor包含这100行.

您可以将Cursor想象为具有动态大小(类似于List)的数据映射,其中数据被放置为"行".每行都有自己的行ID(行号,我们可以说是一些指针),它们在插入Cursor时逐渐生成,您只需在具有此数字的行之间移动即可.隐含地每个Cursor都有"实际指针"位于第一行(-1位置)之前,所以如果你调用c.getString(0)expection将被抛出,因为没有什么可以检索.

所以总是你必须调用cursor.moveToFirst()那个准备Cursor读取,如果是空的,方法返回false,因为没有行.