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);
}
isBeforeFirst()
返回游标是否指向之前第一行的位置
isAfterLast()
返回游标是否指向第最后一行的位置
isClosed()
分享到:
相关推荐
在 Android 开发中,Cursor 是一个非常重要的类,主要用于处理数据查询结果。它提供了一个简洁的方法来访问数据库查询的结果集,并允许开发者方便地遍历这些结果。对于新手而言,理解 Cursor 的工作原理以及如何正确...
android 使用 Cursor 访问数据库 生成 ListView 并获取选中项的值
2. 在异步任务或线程中使用Cursor,当任务完成或线程结束,Cursor可能仍然保持活动状态。 3. 将Cursor引用保存在非局部变量中,导致Cursor生命周期超出其应有的范围。 Android检测Cursor泄漏的原理基于Java对象的...
6. **避免匿名内部类引用Cursor**:如果必须在匿名内部类中使用Cursor,可以使用弱引用(WeakReference)来避免阻止Cursor的垃圾回收。 7. **使用工具进行检测**:利用Android Studio的Memory Profiler工具,或者第...
在这个例子中,我们从Cursor中获取"标题"和"图片"列的数据,并将其显示在TextView和ImageView中。 **4. changeCursor()方法** 当Cursor的数据源发生变化时,如更新、插入或删除记录,可以调用changeCursor()方法来...
在Android开发中,SQLite是一个非常重要的数据存储工具。SQLite是一个轻量级的、关系型...以上就是Android中SQLite的使用相关知识点,通过熟练掌握这些内容,开发者能够高效地在Android应用中实现数据存储和管理。
SQLiteOpenHelper和SQLiteDatabase是Android Studio中使用SQLite数据库的核心组件,ContentValue和Cursor是辅助工具。通过使用这些组件和工具,可以轻松地在Android Studio中实现数据库的创建、读写和管理。
以下是对Android中使用SQLite进行详细讲解: 1. **SQLite简介** SQLite是一个开源、嵌入式的关系型数据库,支持SQL标准。在Android中,每个应用程序都可以拥有自己的SQLite数据库,并且无需额外的服务器进程。它的...
本文将详细探讨如何在Android应用中使用jxl库快速导出Excel表格。 首先,我们需要理解jxl库的基本概念。jxl是一个Java API,它支持Microsoft Excel 97-2004的文件格式(.xls)。通过jxl,我们可以创建新的工作簿、...
在这个实例中,我们将深入探讨如何使用Android通讯录的内容提供者来查询和添加联系人。 一、Android内容提供者基础 内容提供者是一个实现了ContentProvider类的组件,它负责存储、检索以及更新应用程序的数据。每个...
在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它提供了自动补全功能,用户在输入时可以接收到下拉列表的建议,提高了输入效率。`MultiAutoCompleteTextView` 是 `AutoCompleteTextView` 的扩展,...
下面将详细介绍如何在 Android Studio 中使用 LitePal 数据库。 添加 LitePal 依赖项 在使用 LitePal 之前,需要在项目的 build.gradle 文件中添加 LitePal 的依赖项。打开 Project 视图下的 app 的 build.gradle ...
Android提供了一些预定义的URI常量和辅助类,以便于开发者更加方便地处理URI。 接下来,我们来看看ContentResolver的主要接口及其功能: 1. `insert(Uri url, ContentValues values)`:此方法用于向...
"Android之SQLite实现增删改查"这个标题表明了本文将介绍如何在Android平台中使用SQLite数据库来实现增删改查操作。 描述解释 "这是学习及开发SQlite的一个很好的例子,含有其增删改查的所有功能附有完整的代码可以...
在Android开发中,`Cursor` 是一个非常重要的概念,它用于从SQLite数据库中检索数据。`Cursor` 类就像一个指针,可以遍历查询结果中的每一行数据。本篇文章将详细介绍如何使用`Cursor`以及在实际代码中的应用。 ...
总之,Android中的SQLite数据库提供了一种有效的方式,用于在本地存储应用程序所需的数据。通过创建一个像DBAdapter这样的辅助类,可以简化数据库操作,并使代码更加整洁和易于维护。了解这些基础知识后,你就可以...
在Android平台上,与U盘进行文件的读写操作并不像在桌面系统中那样直接,因为Android设备通常不直接支持USB主机模式(Host Mode)。然而,借助第三方库如libaums,我们可以实现这一功能。libaums是Android上一个用于...
以下是关于Android中SQLite的详细使用方法: 1. 创建SQLite数据库 - 首先,创建一个继承自`SQLiteOpenHelper`的类。这个类有两个关键的方法:`onCreate()`和`onUpgrade()`。`onCreate()`方法在数据库首次创建时被...
Android API Level 9引入了`DownloadManager`类,它是一个系统服务,能够处理后台下载并提供各种高级功能,如网络状况检测、通知、以及自动重新尝试失败的下载。 **使用DownloadManager** 1. 获取DownloadManager...