我对Android中Cursor
的实施细节很感兴趣。我知道基本上它只是一个interface,它提供对数据库查询返回的结果集的随机读写访问。我想知道特定的Cursor
实现:
答案 0 :(得分:6)
是一些存储数据库结果集的数据结构
是
或者是一些只能处理一行的结构?
不完全是。游标可以根据源查询处理一行或多行。游标是数据的映射,将包含与源(选择)查询返回的行数。因此,如果查询返回100行,则这些行将插入到Cursor中,而Cursor包含这100行。
您可以将Cursor想象为具有动态大小(类似于List)的数据映射,其中数据被放置为“行”。每行都有自己的行ID(行号,我们可以说是一些指针),它们在插入Cursor时逐渐生成,您只需在具有此数字的行之间移动即可。
隐含地每个Cursor都有“实际指针”位于第一行(-1位置)之前,所以如果你调用c.getString(0)
,则会抛出预期,因为没有任何东西需要检索。
所以总是你必须调用cursor.moveToFirst()
准备Cursor读取,如果是空的,方法返回false,因为没有行。