[Android Pro] 完美Android Cursor使用例子(Android数据库操作)

摘要:
游标是一个随机数据源。Cursor位于android.database.Cursor类中,这表明其设计基于数据库服务。在Android中查询数据是通过Cursor类实现的。cur.isAfterLast();当前。moveToNext()){intnameColumn=cur.getColumnIndex;intphoneColumn=cur.get-ColumnIndex;Stringname=cur.ggetString;StringphoneNumber=cur.getString;}使用上述方法,可以通过以下方式提取数据:

reference to : http://www.ablanxue.com/prone_10575_1.html

完美 Android Cursor使用例子(Android数据库操作),Android 使用的数据库是SQLite数据库,对于数据库记录的操作,可以使用Cursor(游标)来进行。

1. 关于 Cursor
在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情:
Cursor 是每行的集合。
使用 moveToFirst() 定位第一行。
你必须知道每一列的名称。
你必须知道每一列的数据类型。
Cursor 是一个随机的数据源。
所有的数据都是通过下标取得。
Cursor 位于 android.database.Cursor类,可见出它的设计是基于数据库服务产生的。
在Android 查询数据是通过Cursor 类来实现的。当我们使用 SQLiteDatabase.query()方法时,就会得到Cursor对象, Cursor所指向的就是每一条数据。

2. 关于 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()
移动光标到上一行

3. 小例子:
(1) 为空的Cursor的判断

if (cur.moveToFirst() == false) {
    //为空的Cursor
    return;
} 

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

int nameColumnIndex = cur.getColumnIndex(People.NAME);
String name = cur.getString(nameColumnIndex); 

(3)循环 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);
}

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

免责声明:文章转载自《[Android Pro] 完美Android Cursor使用例子(Android数据库操作)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Win10+Java7环境配置【转】SHarpPcap(winpcap基于c#封转的库)网络嗅探程序核心下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Navicat for mysql 破解版安装

mysql数据库是我们软件开发常用的数据库,个人感觉挺好用的。由于 MySQL 数据库体积小、速度快、总体拥有成本低、开放源代码,其有着广泛的应用,一般中小型网站的开发都选MySQL 作为网站数据库。由于其社区版的性能卓越,因此搭配PHP和 Apache 服务器可组成良好的开发环境。但是总感觉mysql的界面让人不忍直视,感觉没有sqlserver数据库那...

开发者使用JasperReport——带参数查询数据库

前言 上一篇我们介绍了如何使用JasperReport来生成查询数据库的报表,今天我们在其基础上再稍进一步,那就是如何带参数查询数据库。 正题 跟上一篇一样,我们要生成报表需要以下几个步骤: 1.引入jar包,请看《静态文本报表》 。 2.新建报表模版: 由于我们这次需要带参数查询数据库(查询的是T_USER数据表),所以报表模版需要更改一下,其实只更...

Mysql基础

字段类型 mysql字段定义中INT(x)中的x仅仅指的是显示宽度。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。所以x的定义与存储空间没有任何关系都是4个字节。 超过最大数值不会报错但是根据此字段查询不到,也关联不起来。 查看mysql数据库编码 sho...

如何修改数据库密码

mysql 忘记了管理员密码解决方法,修改数据库密码的几种方法 如何修改数据库密码 方法 1: 用 SET PASSWORD 命令 首先登录 MySQL。 格式:mysql> set password for 用户名 @localhost = password('新密码'); 例子:mysql> set password for root@lo...

MySQL(5.0~5.7)Linux环境

 安装服务 1.MySQL-5.0.40 1.1.Source Installation Overview(lines 74 of install-source) 系统默认可能会安装三个mysql的包: mysql-libs mysql mysql-devel 从下往上依赖关系。 源码包安装mysql #检查环境 rpm -aq | grep...

SQLITE3 使用总结(直接使用C函数)

转载网址:http://blog.chinaunix.net/uid-8447633-id-3321394.html 前序: Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。 这里要注明,我是一个跨平台专注者,并不喜欢只用 window...