cursor的idea
时间: 2025-01-22 17:08:37 浏览: 46
### Cursor概念及其在Android中的应用
#### 什么是Cursor?
`Cursor` 是一个接口,在 Android 中用于存储来自数据库查询的结果集。它提供了一种遍历和操作这些结果的方法[^1]。
#### 如何获取Cursor对象?
当执行 `ContentResolver.query()` 或者直接使用 `SQLiteDatabase.query()` 方法时,返回的对象即为 `Cursor` 实例。此实例包含了所有满足条件的数据记录[^2]。
```java
// 使用 ContentResolver 查询联系人表并获得游标
Cursor cursor = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI,
null,
null,
null,
null);
```
#### 基本用法
- **移动指针位置**:可以利用 `moveToFirst()`, `moveToNext()`, `moveToPosition(int position)` 等函数改变当前指向的位置。
- **读取字段值**:对于每一列都可以通过特定类型的 getter 函数如 `getString(int columnIndexOrName)`, `getInt(int columnIndexOrName)` 来取得相应的内容。
- **判断是否有更多行**:可通过 `isAfterLast()` 和 `isBeforeFirst()` 判断是否已经到达边界;而 `getCount()` 可以得到总共有多少条目。
```java
if (cursor != null && cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Log.d("Contact", "Name: " + name);
} while (cursor.moveToNext());
}
```
#### 关闭Cursor
为了防止内存泄漏,务必确保每次使用完毕之后都调用了 `close()` 方法释放资源[^3]:
```java
finally {
if (cursor != null && !cursor.isClosed()){
cursor.close();
}
}
```
阅读全文
相关推荐


















