SQLite数据库相关(二) Cursor类

前端之家收集整理的这篇文章主要介绍了SQLite数据库相关(二) Cursor类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上一篇可知,通过sqlite数据库对象进行查询返回的都是Cursor对象,那么现在就详细分析一下Cursor类的相关内容

Cursor简介

Cursor翻译过来是游标或指针,那么可以理解,通过sqliteDatabase对象返回的Cursor是一个指向返回结果的指针或者游标,通过这个游标提供的方法可以找到对应的数据集并进行操作。事实证明这样理解是可以的,因为Cursor是一个接口,这个接口包含很多可以对结果集进行操作的方法,如果熟悉JDBC的ResultSet,Cursor就相当于ResultSet,并且比ResultSet的操作方式更加丰富。官方文档的简介是:Cursor接口提供了一种对数据库返回结果集进行随机读写的途径, Cursor的实现类不要求是同步的,所以在多线程中使用Cursor应该只进行其各自的同步。


Cursor操作结果集的常用操作方法

Public Methods
abstract void close() 关闭游标,释放资源,将游标完全标识为不可用
copyStringToBuffer(int columnIndex,CharArrayBufferbuffer) 将列对应的值转换为一个缓冲字符串数组对象
abstract byte[] getBlob(int columnIndex) 将指定列的值一字节数组的方式返回
abstract int getColumnCount() 返回总列数
getColumnIndex( StringcolumnName) 返回列名对应的下标
abstract String getColumnName(int columnIndex) 返回下标对应的列名,从0开始
String[] getColumnNames() 将游标持有的列名以字符串数组的形式返回
getCount() 返回游标持有的数据行数
abstract double getDouble(int columnIndex) 返回列下标对应的Double值
abstract Bundle getExtras() 返回一个Bundle对象
abstract float getFloat(int columnIndex)
getInt(int columnIndex)
abstract long getLong(int columnIndex)
getPosition() 返回游标在当前结果集中的行数位置
abstract short getShort(int columnIndex)
getString(int columnIndex)
getType(int columnIndex) 返回对应行的数据类型
abstract boolean isAfterLast() 是否最后一行
isBeforeFirst() 是否指向第一行之前的位置,相当于游标的头部位置
isClosed() 游标是否已经关闭
isFirst() 是否第一行
isLast() 是否最后一行
isNull(int columnIndex) 指定列的值是否为空
move(int offset) 从当前位置向前或向后移动指定行数
moveToFirst() 移动,指向第一行位置
moveToLast() 移动,指向最后一行位置
moveToNext() 移动,指向下一行
moveToPosition(int position)移动,指向指定行数据
moveToPrevious()移动到前一行
registerContentObserver( ContentObserverobserver)
Register an observer that is called when changes happen to the content backing this cursor.
registerDataSetObserver( DataSetObserverobserver)
Register an observer that is called when changes happen to the contents of the this cursors data set,for example,when the data set is changed via requery(),deactivate(),or close().
respond( Bundleextras)
This is an out-of-band way for the the user of a cursor to communicate with the cursor.
setNotificationUri( ContentResolvercr,Uriuri)
Register to watch a content URI for changes.
unregisterContentObserver( ContentObserverobserver)
Unregister an observer that has prevIoUsly been registered with this cursor via registerContentObserver(ContentObserver).
unregisterDataSetObserver( DataSetObserverobserver)
Unregister an observer that has prevIoUsly been registered with this cursor via registerContentObserver(ContentObserver).

使用实例

  1. publicList<Person>query(){
  2. ArrayList<Person>persons=newArrayList<Person>();
  3. Cursorc=queryTheCursor();
  4. while(c.moveToNext()){
  5. Personperson=newPerson();
  6. person._id=c.getInt(c.getColumnIndex("_id"));
  7. person.name=c.getString(c.getColumnIndex("name"));
  8. person.age=c.getInt(c.getColumnIndex("age"));
  9. person.info=c.getString(c.getColumnIndex("info"));
  10. persons.add(person);
  11. }
  12. c.close();
  13. returnpersons;
  14. }

猜你在找的Sqlite相关文章