Cursor类的介绍

使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合。今天特地将它单独拿出来谈,加深自己和大家对Android 中使用 Cursor 的理解。

关于 Cursor,在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情:

Cursor 是每行的集合。

使用 moveToFirst() 定位第一行。

你必须知道每一列的名称。

你必须知道每一列的数据类型。

Cursor 是一个随机的数据源。

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

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

移动光标到上一行

下面来看看一小段代码:

if (cur.moveToFirst() == false)

{

//为空的Cursor

return;

}

访问 Cursor 的下标获得其中的数据

int nameColumnIndex = cur.getColumnIndex(People.NAME);

String name = cur.getString(nameColumnIndex);

现在让我们看看如何循环 Cursor 取出我们需要的数据

while(cur.moveToNext())

{

//光标移动成功

//把数据取出

}

当cur.moveToNext() 为假时将跳出循环,即 Cursor 数据循环完毕。

如果你喜欢用 for 循环而不想用While 循环可以使用Google 提供的几下方法:

isBeforeFirst()

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

isAfterLast()

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

isClosed()

如果返回 true 即表示该游戏标己关闭

有了以上的方法,可以如此取出数据

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

}

Tip:在Android 查询数据是通过Cursor 类来实现的。当我们使用 SQLiteDatabase.query()方法时,就会得到Cursor对象, Cursor所指向的就是每一条数据。结合ADO.net 的知识可能好理解一点。

Cursor 位于 android.database.Cursor类,可见出它的设计是基于数据库服务产生的。

另外,还有几个己知的子类,分别为:

AbstractCursor

AbstractWindowedCursor

CrossProcessCursor

CursorWrapper

MatrixCursor

MergeCursor

MockCursor

SQLiteCursor

具体详细的使用方法和解释可以去参照API,这里就不过多讲述。

 

本文转自:http://tech.cncms.com/shouji/android/41527_2.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cursor是Python中数据库API的一部分,用于在数据库连接中执行查询操作并管理结果集。它提供了一种从结果集中检索行和列数据的方法,并提供了一些用于浏览和修改结果集的方法。 在使用Cursor对象之前,必须先建立一个数据库连接。一旦建立了连接,可以使用Cursor()方法创建一个游标对象,然后可以使用该游标对象执行查询操作和管理结果集。 一些常用的Cursor方法包括: - execute():执行SQL查询,可以传递参数,返回值为受影响的行数; - executemany():执行多个参数相同的SQL查询,返回值为受影响的行数; - fetchone():获取结果集中的下一行数据,返回值为一行数据的元组; - fetchall():获取结果集中的所有行数据,返回值为多个元组组成的列表; - fetchmany():获取结果集中的指定数量的行数据,返回值为多个元组组成的列表。 此外,Cursor还提供了一些用于管理结果集的方法,例如scroll()、rowcount()、fetchwarnings()等。 总之,Cursor是Python数据库API中一个非常重要的,它提供了一种从数据库中检索数据的方法,并且可以通过一些方法来管理和修改结果集。 ### 回答2: Cursor(光标)是用于在数据库查询中遍历结果集的Java。在Java中,我们使用Cursor来执行SQL查询并从结果集中检索数据。以下是Cursor的一些重要信息和功能: 1. 创建Cursor对象:我们可以使用数据库的query()或rawQuery()方法来执行SQL查询,并将结果存储在Cursor对象中。例如:Cursor cursor = database.rawQuery("SELECT * FROM table", null); 2. 遍历结果集:Cursor对象允许我们按顺序逐个遍历结果集中的记录。我们可以使用moveToFirst()方法将光标移到结果集的第一行,然后使用moveToNext()方法逐个移动到下一行。我们还可以使用moveToPrevious()和moveToLast()方法在结果集中移动。 3. 获取列索引:我们可以使用getColumnIndex()方法来获取指定列名的索引。例如,如果我们要获取"name"列的索引,我们可以使用int index = cursor.getColumnIndex("name"); 4. 检索数据:我们可以使用Cursor中的各种get方法来检索数据。根据具体的列型,我们可以使用getInt()、getLong()、getFloat()、getDouble()等方法来获取整数、长整数、浮点数、双精度数等型的数据。我们还可以使用getString()方法来获取字符串型的数据。 5. 关闭Cursor:在使用完Cursor对象后,我们应该及时关闭它以释放资源。我们可以使用close()方法来关闭Cursor对象。例如,cursor.close(); 总体而言,Cursor是一个非常有用的工具,可以帮助我们在数据库查询中获取和处理数据。它提供了各种方法和功能,使得我们可以方便地遍历结果集并获取所需的数据。但是,在使用Cursor对象时,我们需要小心处理空指针异常和内存泄漏问题,以确保代码的稳定性和性能。 ### 回答3: Cursor是Java编程语言中的一个,用于处理数据库查询结果的游标(cursor)对象。它提供了一种机制,使得我们可以从查询结果集中逐行访问数据。具体来说,Cursor提供了以下几个重要的方法和属性: 1. moveToFirst():将游标移动到结果集的第一行。 2. moveToNext():将游标移动到结果集的下一行。 3. moveToPrevious():将游标移动到结果集的上一行。 4. moveToLast():将游标移动到结果集的最后一行。 5. isAfterLast():判断游标是否指向结果集的最后一行之后。 6. isBeforeFirst():判断游标是否指向结果集的第一行之前。 7. getCount():获取结果集中的总行数。 8. getColumnIndex(String columnName):根据列名获取该列在结果集中的索引。 9. getColumnName(int columnIndex):根据列索引获取该列的名称。 10. getString(int columnIndex):根据列索引获取字符串型的列值。 11. getInt(int columnIndex):根据列索引获取整数型的列值。 12. getLong(int columnIndex):根据列索引获取长整数型的列值。 13. getFloat(int columnIndex):根据列索引获取单精度浮点数型的列值。 14. getDouble(int columnIndex):根据列索引获取双精度浮点数型的列值。 通过使用Cursor,我们可以轻松地遍历查询结果集中的每一行,并获取每一列的值。这种逐行访问的方式非常适合处理大型的查询结果集,能够有效地减少内存占用和提高程序性能。同时,Cursor还可以和其他(如Adapter)结合使用,实现数据的展示和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值