【发布时间】:2022-01-05 03:18:57
【问题描述】:
我对@987654322@ 在Android 中的实现细节很感兴趣。我知道基本上它只是一个interface,它提供对数据库查询返回的结果集的随机读写访问。我想知道特定的 Cursor 实现:
- 它是某种存储数据库结果集的数据结构吗?
- 或者它只是一个只处理一行的结构?
【问题讨论】:
标签: java android android-cursor
我对@987654322@ 在Android 中的实现细节很感兴趣。我知道基本上它只是一个interface,它提供对数据库查询返回的结果集的随机读写访问。我想知道特定的 Cursor 实现:
【问题讨论】:
标签: java android android-cursor
Is只是一些存储数据库结果集的数据结构
是的。
或者它是一些只处理一行的结构?
不完全是。游标可以根据源查询处理一行或多行。光标是数据映射,将包含与 source(select) 查询返回的行数一样多的行。所以如果查询返回一百行,这些行被插入到 Cursor 并且 Cursor 包含这一百行。
您可以将光标想象为具有动态大小的数据映射(类似于列表),其中数据被放置为“行”。每行都有自己的行 id(行号,我们可以说是一些指针),当它们被插入到 Cursor 时逐渐生成,您可以简单地在具有此编号的行之间移动。
隐式地,每个 Cursor 都有位于第一行(-1 位置)之前的“实际指针”,因此如果您调用 c.getString(0),将抛出期望,因为没有什么可检索的。
所以你总是必须调用 cursor.moveToFirst() 来准备 Cursor 以供读取,如果为空,则方法返回 false,因为没有行。
【讨论】: