Android中cursor类的使用

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是否为空,也就是没数据

if (cur.moveToFirst() == false)
{
//为空的Cursor
 return;
}

或者

if (null != cur ){
      
}


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

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

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

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

3,遍历cursor中每行数据

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


或者

do {


  }while(cur.moveToNext())


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

for(cur.moveToFirst();!cur.isAfterLast();cur.moveToNext())
{
    int nameColumn = cur.getColumnIndex(People.NAME);
    int phoneColumn = cur.getColumnIndex(People.NUMBER);
    String name = cur.getString(nameColumn);
    String phoneNumber = cur.getString(phoneColumn);
}

isBeforeFirst()

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

isAfterLast()

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

isClosed()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值