Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android数据库游标是如何具体实现的?_Java_Android_Cursor - Fatal编程技术网

Java Android数据库游标是如何具体实现的?

Java Android数据库游标是如何具体实现的?,java,android,cursor,Java,Android,Cursor,我对Android中游标的实现细节很感兴趣。我知道,基本上,它只是一个提供对数据库查询返回的结果集的随机读写访问的函数。我想知道具体的Cursor实现: 它是一种存储数据库结果集的数据结构吗 或者它只是一个只处理一行的结构 Is只是一些存储数据库结果集的数据结构 对 或者它是一个只处理一行的结构 不完全是。游标可以根据源查询处理一行或多行。游标是数据的映射,将包含源(选择)查询返回的行数。所以,若查询返回一百行,这些行将插入到游标中,游标将包含这一百行 您可以将光标想象为具有动态大小(类似于列表

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

  • 它是一种存储数据库结果集的数据结构吗
  • 或者它只是一个只处理一行的结构 Is只是一些存储数据库结果集的数据结构

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

    不完全是。游标可以根据源查询处理一行或多行。游标是数据的映射,将包含源(选择)查询返回的行数。所以,若查询返回一百行,这些行将插入到游标中,游标将包含这一百行

    您可以将光标想象为具有动态大小(类似于列表)的数据地图,其中数据被放置为“行”。每一行都有自己的行id(行号,我们可以说是一些指针),当它们被插入到游标时会逐渐生成,您可以简单地使用这个数字在行之间移动。 隐式地,每个游标的“实际指针”位于第一行(-1)之前,因此,如果调用
    c.getString(0)
    expection将被抛出,因为没有要检索的内容

    所以您必须始终调用为读取准备游标的
    cursor.moveToFirst()
    ,如果为空,则方法返回false,因为没有行