Android中关于Cursor类的用法

转载 2015年11月17日 23:34:14

关于 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类,可见出它的设计是基于数据库服务产生的。

Android Cursor用法

Cursor作用类似于java中resultSet,把查询到的结果集封装在一个Cursor对象当中。cursor就像是结果集上的一个游标,可以向前向后移动。 常用方法: close() 关闭游标,释...
  • hejiero
  • hejiero
  • 2014年02月08日 20:38
  • 3756

Android中cursor类的使用

http://blog.csdn.net/xinqiqi123/article/details/6674215 android中从数据库中查出来的数据一般都存在cursor中即:Cursor...
  • baohanqing
  • baohanqing
  • 2014年03月30日 15:21
  • 1357

CSS中的cursor用法

CSS中的光标类型语法:  cursor : auto | all-scroll | col-resize| crosshair | default | hand | move | help | no...
  • fanyuna
  • fanyuna
  • 2010年04月17日 17:53
  • 2416

JAVA中类Cursor的定义

JAVA中类Cursor的定义 分类: Java 2010-07-13 11:39 4131人阅读 评论(0) 收藏 举报 javaobjectstring虚拟机except...
  • songjunyan
  • songjunyan
  • 2014年09月23日 15:08
  • 687

关于 Android cursor用法

今天总结了下关于sqlite数据库取得数据的文章,其实如果仔细分析一下的话,cursor这个类的用法还是很清晰的。 c.getColumnCount()   返回一共多少列总数 c.ge...
  • w304970865rui
  • w304970865rui
  • 2012年09月15日 10:46
  • 653

Android Studio—— Cursor的moveToFirst和moveToNext

原文链接:http://blog.csdn.net/kerlw/article/details/6126448 最近项目中用到很多查询数据的地方,都用到了Cursor,但是对Curs...
  • oscar92420aaa
  • oscar92420aaa
  • 2015年12月14日 20:04
  • 817

Session Cursor的种类和用法

Oracle数据库里的Session Cursor 又细分为三种类型,分别是 **隐式游标(Implicit Cursor)、 显示游标(explicit Cursor) 参考游标(ref ...
  • chao_19
  • chao_19
  • 2017年06月13日 23:03
  • 207

Android Cursor类的了解和使用

SQLite数据库中的Cursor是每一行的集合 moveTOFirst();可将Cursor定位到第一行 想要获取相应数据,必须知道每一列的名称和每一列的数据类型 方法详解 ·clo...
  • Yours2
  • Yours2
  • 2016年07月30日 17:14
  • 189

android关闭cursor的方法

今天review了一下之前写播发器的代码,发现了个问题,在音乐数据信息查询后,没有及时关闭cursor,虽然目前使用没什么大问题,可是在音乐数据比较多时,可能会有不好的影响,所以我还是觉得有必要对Cu...
  • saberhao
  • saberhao
  • 2015年08月17日 13:17
  • 405

【Android】SQLite的工具类 ---- 通过反射把Cursor封装到VO对象

在写DAO层时,觉得从Cursor里一个一个的取出字段值再装到VO(值对象)里太麻烦了,就写了一个工具类,用到了反射,可以把查询记录的值装到对应的VO里,也可以生成该VO的List。   使用时需...
  • Oo8_8oO
  • Oo8_8oO
  • 2011年11月23日 10:33
  • 7399
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中关于Cursor类的用法
举报原因:
原因补充:

(最多只允许输入30个字)