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);
}
返回游标是否指向之前第一行的位置
返回游标是否指向第最后一行的位置
isClosed()