`
liuquanjc
  • 浏览: 62400 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Android 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

本篇文章来源于 黑软基地-中国最大的黑客软件安全教程下载站! 原文链接:http://www.hackvip.com/mobiwen/html/Mobile_221615.html

分享到:
评论

相关推荐

    Android cursor的用法

    ### Android Cursor 的用法 #### 一、简介 在 Android 开发中,Cursor 是一个非常重要的类,主要用于处理数据查询结果。它提供了一个简洁的方法来访问数据库查询的结果集,并允许开发者方便地遍历这些结果。对于...

    Android检测Cursor泄漏的原理以及使用方法

    以下是对Android检测Cursor泄漏的原理、使用方法以及常见问题的详细解释。 **Cursor泄漏原理** Cursor泄漏通常发生在以下情况: 1. 当Cursor创建后,没有在使用完毕后调用`close()`方法释放资源。 2. 在异步任务或...

    Cursor的用法.docx

    在Android开发中,`Cursor` 是一个非常重要的概念,它用于从SQLite数据库中检索数据。`Cursor` 类就像一个指针,可以遍历查询结果中的每一行数据。本篇文章将详细介绍如何使用`Cursor`以及在实际代码中的应用。 ...

    android在异步任务中关闭Cursor的代码方法

    使用`Activity`的`managedQuery()`方法可以方便地管理Cursor的生命周期,因为它会在`Activity`暂停或销毁时自动关闭Cursor。但这种方法有一个限制,即它不支持动态更换Cursor,如果查询条件改变,我们需要重新查询并...

    android sqlite的使用方法

    以下是关于Android中SQLite的详细使用方法: 1. 创建SQLite数据库 - 首先,创建一个继承自`SQLiteOpenHelper`的类。这个类有两个关键的方法:`onCreate()`和`onUpgrade()`。`onCreate()`方法在数据库首次创建时被...

    Android App调试内存泄露之Cursor.zip

    - 忘记关闭Cursor:开发者可能在使用完Cursor后忘记调用`close()`方法。 - 异步任务中的Cursor:在异步任务或线程中使用Cursor,如果任务未结束或线程未停止,Cursor将无法正常关闭。 - CursorAdapter与ListView...

    android获取相册图片和路径的实现方法

    尤其是在Android 4.4(KitKat)及更高版本,由于系统API的变化,开发者需要采用新的方法来处理这一任务。以下是一个详细解释如何在Android 4.4之后获取相册图片和路径的实现方法。 首先,我们需要了解在不同版本的...

    Android 中数据库查询方法query() 中的selectionArgs 的用法.doc

    本文将详细讲解在使用SQLite数据库查询时,`query()`方法中的`selectionArgs`参数的用法。 首先,`query()`方法是Android中进行数据库查询的主要接口,它来自`android.database.sqlite.SQLiteDatabase`类。该方法...

    Android开发笔记之:深入理解Cursor相关的性能问题

    总结来说,理解并优化Cursor的使用是提升Android应用性能的关键。开发者应当关注查询效率、内存管理和数据分段加载,确保应用在处理大量数据时仍能保持流畅的用户体验。通过遵循这些最佳实践,可以有效地避免Cursor...

    AndroidCallLog获取通话记录

    本篇将详细介绍如何在Android中获取通话记录,并封装工具类以方便使用,同时展示如何将获取的数据展示在ListView中。 首先,我们需要了解Android中的CallLog数据库。Android系统维护了一个名为`CallLog`的内置...

    Android-Android使用jxl快速导出excel表

    你可以通过研究这个项目的源代码,学习如何将Android中的数据结构(如ArrayList或Cursor)与jxl库结合,实现数据的导出功能。 总之,使用jxl库在Android上快速导出Excel表格需要理解jxl的API,处理Android特有的...

    Android studio 使用自带DownloadManager实现更新app

    本篇将详细讲解如何使用Android自带的`DownloadManager`来实现这个功能。 `DownloadManager`是Android系统提供的一个服务,用于在后台下载大文件,特别适合用来下载应用更新。它具有良好的兼容性,从Android 2.3...

    Android 实现读写U盘文件

    libaums是Android上一个用于访问USB存储设备(如U盘)的库,它基于Android开放源码项目(AOSP)的USBMassStorageDriver,并提供了简单的API接口供开发者使用。本篇将深入探讨如何利用libaums在Android应用中进行U盘...

    Android获取手机短信

    Android系统提供了丰富的API接口供开发者使用,使得我们能够方便地读取、操作甚至监听短信的变化。下面将详细介绍如何在Android中获取短信。 一、权限配置 在AndroidManifest.xml文件中,你需要添加以下权限来访问...

    android 加载本地联系人实现方法

    以上就是Android中加载本地联系人的一种实现方法,可以根据实际需求进行调整和优化,比如增加头像显示、分组显示等高级功能。通过这种方式,开发者能够方便地将用户的联系人信息整合到自己的应用程序中。

    查看android.provider包中的uri内容

    描述中提到的“查看android.provider包中的uri内容”,可能是指开发者使用某种工具或者方法来查看和分析`android.provider`包中各个类的`URI`定义和使用情况。这有助于理解如何与系统内容提供者进行交互,获取或修改...

    Android中CursorAdapter的使用

    本篇文章将深入探讨如何在Android应用程序中有效地使用CursorAdapter,以及涉及的核心方法newView()和bindView()。 首先,CursorAdapter是BaseAdapter的一个子类,它的主要作用是将Cursor对象中的数据绑定到...

    Android studio—读取通讯录

    本文将深入探讨如何使用Android Studio来读取手机的通讯录,这是一个非常实用且基础的知识点,适用于移动应用开发。 首先,我们要了解在Android中读取通讯录的权限管理。自Android 6.0(API级别23)开始,系统实行...

    (android studio)安卓实验查看系统短信

    3. 使用ContentResolver的query()方法进行查询,传入Uri和可选的查询参数。例如,如果你想获取所有短信,可以不传入任何参数。如果想筛选特定类型的短信,如只读取收件箱中的短信,可以传入`Uri.parse("content://...

Global site tag (gtag.js) - Google Analytics