添加、更新和删除内容
摘要:在Content Provider上执行交互,通过调用ContentResolver对象的delete、update和insert方法。InsertContentResolver提供了两个插入新的记录的方法——insert和bulkInsert。两个方法都接受你想添加的项目类型的URI;前者接受单一的ContentValues对象,后者接受一个数组。简单的insert方法会...
阅读全文
posted @
2009-08-07 17:09
xirihanlin
阅读(2568)
推荐(0) 编辑
查询内容
摘要:和数据库中一样,查询的结果以一个指向结果集的Cursor返回。你可以使用在之前的关于数据库“提取结果”章节中描述的技巧来提取结果。Content Provider的查询传入的参数和数据库查询非常相似。在ContentResolver对象上使用qurey方法,传入:❑ 你想查询的数据的URI。❑ 你想在结果集中包含的列项。❑ where语句,定义了要返回的行。你可以包含?通配...
阅读全文
posted @
2009-08-07 17:08
xirihanlin
阅读(663)
推荐(0) 编辑
使用Content Provider
摘要:通过ContentResolver类来访问Content Provider。接下来的章节演示了如何访问一个Content Reslover,以及如何使用它来查询和与Content Provider交互。另外,还演示了一些使用本地的Android Content Provider的例子。Content Resolver介绍每个应用程序的上下文都有一个ContentResolver,可通过getCon...
阅读全文
posted @
2009-08-07 17:07
xirihanlin
阅读(663)
推荐(0) 编辑
Content Provider介绍
摘要:Content Provider是一种允许在应用程序间共享数据的一种通用的接口机制。通过对底层数据源的抽象,Content Provider减低了应用程序层与数据层间的耦合,使得应用程序的数据源不可知。Content Provider拥有完全的权限控制并通过一个简单的URI进行访问。共享的数据通过查询获取,同时也支持写入。因此,一个拥有合适权限的应用程序可以添加、删除和更新其它任一应用程序的数据&...
阅读全文
posted @
2009-08-07 17:06
xirihanlin
阅读(849)
推荐(0) 编辑
保存To-Do List
摘要:在本章的前面,你增强了To-Do List例子的功能,能够在会话间保存Activity UI的状态。那只是一半的工作;在接下来的例子里,你将创建一个私有的数据库来保存那些to-do项:1. 创建一个新的ToDoDBAdapter类。它将用于管理你的数据库交互。创建私有的变量来储存SQLiteDatabase对象和调用程序的上下文。添加构造函数来得到所属程序的上下文,并且为数据库的名和版本以及to-...
阅读全文
posted @
2009-08-07 15:03
xirihanlin
阅读(1172)
推荐(0) 编辑
添加、更新和删除行
摘要:SQLiteDatabase类暴露了特定的方法,如insert、delete和update等方法,这些方法包装了执行这些动作所需的SQL语句。尽管如此,execSQL方法允许你在数据库表上执行任何有效的SQL语句,而这些动作就是你想要手动执行的。在任何时候,如果你修改了底层数据库的值,你都应该调用任一在当前表上浏览的Cursor的refreshQuery方法。插入新行为了创建一个新行,构造一个Co...
阅读全文
posted @
2009-08-07 11:01
xirihanlin
阅读(835)
推荐(0) 编辑
提取结果
摘要:通过Cursor来提取实际的值,首先要使用moveTo<位置>方法来将Cursor移动到结果集中正确的行上。在Cursor位于正确的行上的前提下,使用类型安全的get方法(传入一个列索引)来获得储存在当前行、特定列的值,如下面的片段所示:String columnValue = myResult.getString(columnIndex);数据库的实现应该公布列索引的静态变量,这样能...
阅读全文
posted @
2009-08-07 10:39
xirihanlin
阅读(593)
推荐(0) 编辑
查询数据库
摘要:所有的数据库查询都返回一个结果集的游标。这种方式使得Android通过在需要的时候检索和释放行和列的值来更加有效地管理资源。执行一个数据库的查询,使用query方法,传入以下参数:❑ 一个可选的布尔值来指定结果集中每一行是否是独一无二的。❑ 需要查询的表的名字❑ 一个字符串数组,标明在结果集中包含的列项。❑ 一个where语句来定义要返回的行。你可以包含?通配符,它会被selectionArgs参...
阅读全文
posted @
2009-08-07 10:25
xirihanlin
阅读(777)
推荐(0) 编辑
Android数据库设计考虑
摘要:当你设计你的数据库时,这里有几点建议你应该考虑一下:❑ 文件(例如位图或音频文件)一般不储存在数据库的表中。一般用字符串来存储文件的路径,最好是一个正确的Content Provider URI。❑ 当没有严格的需求时,强烈建议所有的表中都包含一个自动增加的关键字段,它可以用作每行的独一无二的索引值。值得注意的是,当你计划用Content Provider来共享你的表,那么,独一无二的ID字段是必...
阅读全文
posted @
2009-08-07 09:42
xirihanlin
阅读(2028)
推荐(0) 编辑
不用SQLiteOpenHelper来打开和创建数据库
摘要:你可以在程序上下文中用openOrCreateDatabase方法来创建和打开一个数据库,而不用借助SQLiteOpenHelper类的帮忙。建立一个数据库包括两个步骤。第一,调用openOrCreateDatabase来创建一个新的数据库。然后,在返回的数据库实例上调用execSQL方法来运行SQL命令行,它将创建你的表单和相互之间的关系。一般的过程如下面的片段所示:private static...
阅读全文
posted @
2009-08-07 09:31
xirihanlin
阅读(6065)
推荐(1) 编辑
使用SQLiteOpenHelper
摘要:SQLiteOpenHelper是包装了数据库的创建、打开和更新的抽象类。通过实现和使用SQLiteOpenHelper,你可以隐去在数据库打开之前需要判断数据库是否需要创建或更新的逻辑。上面的代码片段显示了如何扩展SQLiteOpenHelper类,通过重写构造函数、onCreate和onUpgrade方法来处理新的数据库的创建和更新到新的版本。在前一个例子中,onUpgrade只是简单的丢弃了...
阅读全文
posted @
2009-08-07 09:24
xirihanlin
阅读(9221)
推荐(2) 编辑
与Android数据库一起工作
摘要:一个好的习惯是创建一个辅助类来简化你的数据库交互。考虑创建一个数据库适配器,来添加一个与数据库交互的包装层。它应该提供直观的、强类型的方法,如添加、删除和更新项目。数据库适配器还应该处理查询和对创建、打开和关闭数据库的包装。它还常用静态的数据库常量来定义表的名字、列的名字和列的索引。下面的代码片段显示了一个标准数据库适配器类的框架。它包括一个SQLiteOpenHelper类的扩展类,用于简化打开...
阅读全文
posted @
2009-08-06 17:53
xirihanlin
阅读(4662)
推荐(1) 编辑
Cursor和ContentValue
摘要:ContentValue对象用于在数据库表(和Content Provider)中插入新的行。每个ContentValue对象代表单一行,包含列名称映射的值。在Android中的查询会得到一个Cursor对象。不是提取和返回结果值的一个拷贝,Cursor实际上指向底层数据的子集。Cursor是一种托管的方式控制在数据库查询的结果集中的位置(行)。Cursor类包含一些用于导航查询结果的函数,包括但...
阅读全文
posted @
2009-08-06 17:31
xirihanlin
阅读(2560)
推荐(0) 编辑
SQLite介绍
摘要:SQLite是一种关系型数据库管理系统(RDBMS)。它在以下方面得到公认:❑ 开源❑ 标准兼容❑ 轻量级❑ 单层它已经被实现为紧凑的C库,并作为Android软件栈的一部分。通过库来提供功能而不是作为分离的处理,使得每个数据库都能成为应用程序的集成部分。它能降低关联、减少反应时间、并简化加锁和同步的处理。SQLite拥有值得信赖的名声,因此,在许多消费者电子设备,包括MP3播放器、iPhone和...
阅读全文
posted @
2009-08-06 17:06
xirihanlin
阅读(689)
推荐(0) 编辑
Android中的数据库
摘要:Android通过SQLite库提供了完整的关系型数据库能力,而不用强加额外的限制。使用SQLite,你可以为每个应用程序创建独立的、关联的数据库。使用它们来储存和管理复杂的、结构化的应用程序数据。所有的Android数据库都存在设备(或模拟器)的/data/data/<包名>/databases文件夹中。默认情况,所有的数据库都是私有的,仅允许创建它们的程序访问。在程序间共享一个数据...
阅读全文
posted @
2009-08-06 16:29
xirihanlin
阅读(673)
推荐(0) 编辑
文件管理工具
摘要:Android提供一些基本的文件管理工具来帮助你处理文件系统。许多功能都放在标准java.io.File包中。对Java文件管理功能的完整描述不在本书的范围内,但Android确实提供了一些特定的文件管理功能,通过应用程序的上下文就能操作。❑ deleteFile允许你移除当前应用程序创建的文件。❑ fileList返回一个字符串数组,指示由当前应用程序创建的所有文件。
阅读全文
posted @
2009-08-06 16:01
xirihanlin
阅读(486)
推荐(0) 编辑
包含静态文件资源
摘要:如果你的应用程序需要外部的文件资源,你可以在你的分发包里包含它们,将其安置在工程结构的/res/raw文件夹中。为了访问这些只读的文件资源,调用应用程序的Resource对象的openRawResource方法来得到指定资源的InputStream。传入R.raw类中的文件变量名(不需要后缀),如下面的框架代码所示:Resources myResources = getResources();In...
阅读全文
posted @
2009-08-06 15:54
xirihanlin
阅读(811)
推荐(0) 编辑
保存和加载文件
摘要:用Shared Preference和数据库来存储应用程序的数据是个很好的习惯。但也存在有时候你需要直接用文件来储存,而不想依赖于Android的托管机制。和标准的Java I/O类与方法一样,Android提供了openFileInput和openFileOutput来简化从本地文件读取或写入流,如下面的代码片段所示:String FILE_NAME = “tempfile.tmp&...
阅读全文
posted @
2009-08-06 15:40
xirihanlin
阅读(609)
推荐(0) 编辑
为地震Viewer创建一个Preference页
摘要:在第5章,你已经创建了一个地震监视器,它能基于Internet种子显示出最近的地震列表。在接下来的例子里,你将为这个地震Viewer创建一个Preference页,来允许用户配置应用程序设定来获得更加个性的体验。你将为程序提供以下功能:自动更新、更新频率和最小地震级别的过滤。在本章的后面,你将进一步扩展这个例子,通过创建一个Content Provider来保存地震数据和与其它应用程序共享数据。1...
阅读全文
posted @
2009-08-06 15:15
xirihanlin
阅读(930)
推荐(1) 编辑
保存Activity的状态
摘要:如果你想保存Activity的信息(例如,类实例的变量)而又不需要和其它的组件共享的话,你可以调用Activity的getPreferences方法,不用指定一个Preference的名字。对返回的Shared Preference的访问只限于调用的Activity;每个Activity支持一个不命名的Shared Preference对象。下面的框架代码显示了如何使用Activity的私有Sha...
阅读全文
posted @
2009-08-05 12:13
xirihanlin
阅读(7260)
推荐(0) 编辑