android Cursor用法
使用过 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用法相关推荐
- Android Cursor类的概念和用法
http://www.2cto.com/kf/201109/103163.html 关于 Cursor 在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情: ...
- android 剪贴板服务,Android剪贴板用法详解
本文实例详述了Android剪贴板的用法,分享给大家供大家参考.具体方法分析如下: 这里首先需要注意的一点,就是在使用Android剪贴板的时候大家只记住一点就行了,不管是安卓设备还是PC机,复制粘贴 ...
- 【转】 Android - LayoutInflate用法
[转自]http://blog.csdn.net/scut1135/article/details/7055461 通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Acti ...
- Android Cursor自动更新的实现和原理
原文链接:http://www.sxrczx.com/pages/kohoh1992.github.io/cursor-auto-sync/index_1431878338570.html 在Andr ...
- oracle is ref cursor java_oracle cursor 用法总结
PL sql中cursor用法是非常广泛的,常常用于存储过程和函数的返回值,其中用于函数的返回值变相的解决了pl sql 没有表值函数的问题,一般的,在java 调用存储过程,所返回的结果集也是用游标 ...
- MTK驱动(77)---Android getevent用法
Android getevent用法 getevent命令用法如下: Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [ ...
- Android Cursor的一些浅显见解
一.Cursor的数据模型 之前一直搞不懂Cursor的数据模型是怎么样的,等到看到下面别人博客中把Cursor比作.net中的DataReader才明白,原来是这么回事.但是没 学过.Net的同志可 ...
- Android inflater用法
Android inflater用法 简介 具体作用 获取layoutInflater的三种方式 源码查看 返回值结果 注意 简介 在实际的开发中layoutInflater这个类的主要的主要的作用类 ...
- android plurals用法
参考 android plurals用法 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的,所以android提供了方法getQuantityString(),它可以用来为你选择合适 ...
- android plurals用法(单复数)
0.相关文章 android plurals用法 Android中的string资源占位符及Plurals string 1.使用 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的, ...
最新文章
- 空间复杂度分段分段有序数组合并成有序(空间复杂度为O(1))
- PostgreSQL将表导出为CSV(服务器端、客户机端)完整版
- 【Python学习系列十二】Python库pandas之CSV导入
- Python 最佳实践
- 单例设计模式-ThreadLocal线程单例
- go语言int类型转化成string类型的方式
- 瑞立视:厚积薄发且具有“工匠精神”的中国品牌
- 【英语学习】【医学】【解剖学】Atlas of Human Anatomy (6e) 的目录
- php 7 class 初始化 销毁_在 PHP 中使用和管理 Session
- python数据结构-栈(stack)
- Data-Mediator入门系列4----常用类说明
- 计算机组成原理内存模块,计算机组成原理
- word ctrl v 不能用
- 函数的基本知识点总结(附实例)
- 概率论基础(一):条件均值与全期望公式
- Kernel Pwn 入门 (2)
- eclipes代码提示及防空格自动补全
- 复杂SQL语句练习【III】
- linux设置广播路由,如何设置路由器开启ssid广播 路由器开启ssid广播的详细方法...
- 用Rest assured作API自动化集成测试