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

时间:2013-03-20 09:26:32

标签: java android cursor

我对Android中Cursor的实施细节很感兴趣。我知道基本上它只是一个interface,它提供对数据库查询返回的结果集的随机读写访问。我想知道特定的Cursor实现:

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

1 个答案:

答案 0 :(得分:6)

  

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

  

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

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

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

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