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