Android中cursor类的使用【转】

转自:http://blog.csdn.net/xinqiqi123/article/details/6674215

 

Android中从数据库中查出来的数据一般都存在cursor中即:Cursor mCursor = mSQLiteDatabase.query("select * form table", null),说白了就是一个数据集合,具体的说就是每行数据集合,下面是api中对cursor的解释

关于 Cursor,

 1,Cursor 是每行的集合。

 2,使用 moveToFirst() 定位第一行。  

 3,Cursor 是一个随机的数据源。

 4,所有的数据都是通过下标取得。

 

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()
      移动光标到上一行

       

      1 看些这几行代码一般是判断Cursor是否为空,也就是没数据

    • 1 if (cur.moveToFirst() == false)  
      2 {  
      3 //为空的Cursor  
      4  return;  
      5 }  
    • 或者

      1 if (null != cur ){  
      2         
      3 }  

      其实第二中方法方便,第一种是为了便于理解

      2 通过Cursor 的下标获得数据,下标我的理解是每行行的第几列,下面方法就是获得某行中某列的数据

      1 int nameColumnIndex = cur.getColumnIndex("name");  
      2 String name = cur.getString(nameColumnIndex);  

      其中name为列名,首先通过列名称找出在该行中位于第几列,通过列索引找出该行中name字段的值

      3,遍历cursor中每行数据

      1 while(cur.moveToNext())  
      2 {  
      3 //光标移动成功  
      4 //把数据取出  
      5 }  

      或者

      1 do {  
      2 }while(cur.moveToNext())  

       

       

    • 要是不想用上面这2种循环,习惯用for循环,google有方法实现for循环

    • 1 for(cur.moveToFirst();!cur.isAfterLast();cur.moveToNext())  
      2 {  
      3     int nameColumn = cur.getColumnIndex(People.NAME);  
      4     int phoneColumn = cur.getColumnIndex(People.NUMBER);  
      5     String name = cur.getString(nameColumn);  
      6     String phoneNumber = cur.getString(phoneColumn);  
      7 }  

        isBeforeFirst()

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

        isAfterLast()

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

       isClosed()

posted on 2013-05-07 10:42  林盛  阅读(404)  评论(0)    收藏  举报