使用过 SQLite 数据库对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合。

今天特地将它单独拿出来谈,加深自己和大家对Android 中使用 Cursor 的理解。  

 关于 Cursor 在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情:  

 Cursor 是每行的集合。  

 使用 moveToFirst() 定位第一行。  

 你必须知道每一列的名称。  

 你必须知道每一列的数据类型。  

 Cursor 是一个随机的数据源。  

 所有的数据都是通过下标取得。  

 关于 Cursor 的重要方法:  

 close()   关闭游标,释放资源  

 copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)   

在缓冲区中检索请求的列的文本,将其存储   

getColumnCount()   返回所有列的总数   

getColumnIndex(String columnName)   返回指定列的名称,如果不存在返回-1  

getColumnIndexOrThrow(String columnName)   从零开始返回指定列名称,如果不存在将抛出

IllegalArgumentException 异常。   

getColumnName(int columnIndex)   从给定的索引返回列名   

getColumnNames()   返回一个字符串数组的列名  

 getCount()   返回Cursor 中的行数  

 moveToFirst()   移动光标到第一行   

moveToLast()   移动光标到最后一行  

 moveToNext()   移动光标到下一行  

 moveToPosition(int position)   移动光标到一个绝对的位置  

 moveToPrevious()   移动光标到上一行  

 下面来看看一小段代码:  

 if (cur.moveToFirst() == false)   {  

 //为空的Cursor  

 return;  

 }   

访问 Cursor 的下标获得其中的数据   

int nameColumnIndex = cur.getColumnIndex(People.NAME);   

String name = cur.getString(nameColumnIndex);   

现在让我们看看如何循环 Cursor 取出我们需要的数据  

 while(cur.moveToNext())   {  

 //光标移动成功

  //把数据取出  

 }   

当cur.moveToNext() 为假时将跳出循环,即 Cursor 数据循环完毕。   

如果你喜欢用 for 循环而不想用While 循环可以使用Google 提供的几下方法:  

 isBeforeFirst()   返回游标是否指向之前第一行的位置   

isAfterLast()   返回游标是否指向第最后一行的位置   

isClosed()   如果返回 true 即表示该游戏标己关闭   

有了以上的方法,可以如此取出数据  

 for(cur.moveToFirst();!cur.isAfterLast();cur.moveToNext())  {

  int nameColumn = cur.getColumnIndex(People.NAME);   

int phoneColumn = cur.getColumnIndex(People.NUMBER);   

String name = cur.getString(nameColumn);  

 String phoneNumber = cur.getString(phoneColumn);  

 }   

Tip:在Android 查询数据是通过Cursor 类来实现的。当我们使用 SQLiteDatabase.query()方法时,就会得到Cursor对象, Cursor所指向的就是每一条数据。结合ADO.net 的知识可能好理解一点。   

Cursor 位于 android.database.Cursor类,可见出它的设计是基于数据库服务产生的。   

另外,还有几个己知的子类,分别为:   

AbstractCursor   

AbstractWindowedCursor   

CrossProcessCursor   

CursorWrapper  

 MatrixCursor   

MergeCursor   

MockCursor   

SQLiteCursor   等;

转载于:https://www.cnblogs.com/ansionchen/archive/2012/09/24/3019114.html

android Cursor用法相关推荐

  1. Android Cursor类的概念和用法

    http://www.2cto.com/kf/201109/103163.html 关于 Cursor 在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情: ...

  2. android 剪贴板服务,Android剪贴板用法详解

    本文实例详述了Android剪贴板的用法,分享给大家供大家参考.具体方法分析如下: 这里首先需要注意的一点,就是在使用Android剪贴板的时候大家只记住一点就行了,不管是安卓设备还是PC机,复制粘贴 ...

  3. 【转】 Android - LayoutInflate用法

    [转自]http://blog.csdn.net/scut1135/article/details/7055461 通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Acti ...

  4. Android Cursor自动更新的实现和原理

    原文链接:http://www.sxrczx.com/pages/kohoh1992.github.io/cursor-auto-sync/index_1431878338570.html 在Andr ...

  5. oracle is ref cursor java_oracle cursor 用法总结

    PL sql中cursor用法是非常广泛的,常常用于存储过程和函数的返回值,其中用于函数的返回值变相的解决了pl sql 没有表值函数的问题,一般的,在java 调用存储过程,所返回的结果集也是用游标 ...

  6. MTK驱动(77)---Android getevent用法

    Android getevent用法 getevent命令用法如下: Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [ ...

  7. Android Cursor的一些浅显见解

    一.Cursor的数据模型 之前一直搞不懂Cursor的数据模型是怎么样的,等到看到下面别人博客中把Cursor比作.net中的DataReader才明白,原来是这么回事.但是没 学过.Net的同志可 ...

  8. Android inflater用法

    Android inflater用法 简介 具体作用 获取layoutInflater的三种方式 源码查看 返回值结果 注意 简介 在实际的开发中layoutInflater这个类的主要的主要的作用类 ...

  9. android plurals用法

    参考 android plurals用法 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的,所以android提供了方法getQuantityString(),它可以用来为你选择合适 ...

  10. android plurals用法(单复数)

    0.相关文章 android plurals用法 Android中的string资源占位符及Plurals string 1.使用 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的, ...

最新文章

  1. 空间复杂度分段分段有序数组合并成有序(空间复杂度为O(1))
  2. PostgreSQL将表导出为CSV(服务器端、客户机端)完整版
  3. 【Python学习系列十二】Python库pandas之CSV导入
  4. Python 最佳实践
  5. 单例设计模式-ThreadLocal线程单例
  6. go语言int类型转化成string类型的方式
  7. 瑞立视:厚积薄发且具有“工匠精神”的中国品牌
  8. 【英语学习】【医学】【解剖学】Atlas of Human Anatomy (6e) 的目录
  9. php 7 class 初始化 销毁_在 PHP 中使用和管理 Session
  10. python数据结构-栈(stack)
  11. Data-Mediator入门系列4----常用类说明
  12. 计算机组成原理内存模块,计算机组成原理
  13. word ctrl v 不能用
  14. 函数的基本知识点总结(附实例)
  15. 概率论基础(一):条件均值与全期望公式
  16. Kernel Pwn 入门 (2)
  17. eclipes代码提示及防空格自动补全
  18. 复杂SQL语句练习【III】
  19. linux设置广播路由,如何设置路由器开启ssid广播 路由器开启ssid广播的详细方法...
  20. 用Rest assured作API自动化集成测试

热门文章

  1. 开发一个自己的 CSS 框架(二) 1
  2. 微软从 Engine Yard 手中收购容器平台 Deis
  3. ES6新语法之let关键字;有别于传统关键字var的使用
  4. 习题总结(一)——硬链接,locate,chmod,家目录
  5. Asp.Net将Excel数据导入Sql Server数据库的的例子
  6. 分享非常宝贵的工作经
  7. Linux 命令 su 和 sudo 的区别?
  8. 电商金额计算的 4 个坑,千万注意了!
  9. 为什么我们放弃了微服务?
  10. 阿里规定超过三张表禁止join,这是为什么?