SQLite数据库相关(二) Cursor类

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

      

       Cursor简介

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


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

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

        使用实例

  1. public List<Person> query() {  
  2.         ArrayList<Person> persons = new ArrayList<Person>();  
  3.         Cursor c = queryTheCursor();  
  4.         while (c.moveToNext()) {  
  5.             Person person = new Person();  
  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.         return persons;  
  14.     }  

        







你可能感兴趣的:(android,sqlite数据库,Cursor)