Android中的【Cursor】类总结
最近做一个音乐播放器,不断的用到cursor以及adapter去填充listview,以前只是用的多,知道咋用,没有仔细的深入去学习,今天特意学习了一下,写一点总结,方便自己和大家理解。当然是参考了许多大牛的博客的,这里贴上地址:
http://www.cnblogs.com/TerryBlog/archive/2010/07/05/1771459.html
http://hi.baidu.com/quding0308/blog/item/4623237568d6b100b151b9f4.html.
Cursor是把查询到的结果集封装在一个Cursor对象当中。
cursor就像是结果集上的一个游标,可以向前向后移动。
取出Cursor中的数据一般是用:
while(cursor.moveToNext())
{
// 取值
}
很多时候,不要忘记moveToFirst(),一般都是从第一行开始取值;
移动到需要的行的时候,根据下标来取出当前的行中的对应字段的值,
在使用cursor的时候一定要注意一下问题:
- Cursor 是每行的集合。
- 使用 moveToFirst() 定位第一行。
- 你必须知道每一列的名称。
- 你必须知道每一列的数据类型。
- Cursor 是一个随机的数据源。
- 所有的数据都是通过下标取得。
很多时候可以使用startManagingCursor()这个方法来管理cursor,就不用自己再去关闭(但是觉得这么轻松就能管理Cursor可能会出现一些想不到的问题,但是目前来说我基本都是用这个方法来管理cursor,测试什么的都没有出现问题)。
在Android 查询数据是通过Cursor 类来实现的。当我们使用 SQLiteDatabase.query()方法时,就会得到Cursor对象, Cursor所指向的就是每一条数据。结合ADO.net 的知识可能好理解一点。
Cursor 位于 android.database.Cursor类,可见出它的设计是基于数据库服务产生的。
另外,还有几个己知的子类,分别为:
- AbstractCursor
- AbstractWindowedCursor
- CrossProcessCursor
- CursorWrapper
- MatrixCursor
- MergeCursor
- MockCursor
- SQLiteCursor