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()