Android Cursor(游标)

来源:互联网 发布:sql server msde win7 编辑:程序博客网 时间:2024/06/06 00:32

关于游标的知识点

  1. SQLite执行查询后返回Cursor对象
  2. Cursor 是一个随机的数据源。
  3. Cursor 是每行的集合。
  4. 使用 moveToFirst() 定位第一行。
  5. 你必须知道每一列的名称和数据类型。
  6. 所有的数据都是通过下标取得。

游标内容

Cursor:游标接口,提供了遍历查询结果的方法。

【你可以Cursor cursor =new Cursor()这样就可以看见他所有的方法】

常用方法:

getCount() 总记录数

isFirst() 判断是否第一条记录

isLast() 判断是否最后一条记录

moveToFirst() 移动到第一条记录

moveToLast() 移动到最后一条记录

move(int offset) 移动到指定记录

moveToNext() 移动到下一条记录

moveToPrevious() 移动到上一条记录

getColumnIndexOrThrow(String columnName) 根据列名获取列索引

getInt(int columnIndex) 获取指定索引的int类型值

getString(int columnIndex) 获取指定列索引的String类型值

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

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

注意问题

Cursor是Android查询数据后得到的一个管理数据集合的类,正常情况下,如果查询得到的数据量较小时不会有内存问题,而且虚拟机能够保证Cursor最终会被释放掉。
然而如果Cursor的数据量特别大,特别是如果里面有Blob信息时,应该保证Cursor占用的内存被及时的释放掉,而不是等到GC来处理.并且Android明显是倾向于编程者手动的将Cursor close掉,因为在源代码中我们发现。如果等到垃圾收集器来回收时,也就是如果不手动关闭时,系统会报错,会给用户以错误提示。

关闭游标的正确方式

Cursor c; try { c = queryCursor(); int a = c.getInt(1); ...... // 如果出错,后面的cursor.close()将不会执行 //c.close(); } catch (Exception e) { } finally{ if (c != null) { c.close(); } } 

附:

Activity.startManagingCursor//方法

将获得的Cursor对象交与Activity管理,这样Cursor对象的生命周期便能与当前的Activity自动同步,省去了自己对Cursor的管理。

1 0
原创粉丝点击