摘要:
在Content Provider上执行交互,通过调用ContentResolver对象的delete、update和insert方法。InsertContentResolver提供了两个插入新的记录的方法——insert和bulkInsert。两个方法都接受你想添加的项目类型的URI;前者接受单一的ContentValues对象,后者接受一个数组。简单的insert方法会... 阅读全文
摘要:
和数据库中一样,查询的结果以一个指向结果集的Cursor返回。你可以使用在之前的关于数据库“提取结果”章节中描述的技巧来提取结果。Content Provider的查询传入的参数和数据库查询非常相似。在ContentResolver对象上使用qurey方法,传入:❑ 你想查询的数据的URI。❑ 你想在结果集中包含的列项。❑ where语句,定义了要返回的行。你可以包含?通配... 阅读全文
摘要:
通过ContentResolver类来访问Content Provider。接下来的章节演示了如何访问一个Content Reslover,以及如何使用它来查询和与Content Provider交互。另外,还演示了一些使用本地的Android Content Provider的例子。Content Resolver介绍每个应用程序的上下文都有一个ContentResolver,可通过getCon... 阅读全文
摘要:
Content Provider是一种允许在应用程序间共享数据的一种通用的接口机制。通过对底层数据源的抽象,Content Provider减低了应用程序层与数据层间的耦合,使得应用程序的数据源不可知。Content Provider拥有完全的权限控制并通过一个简单的URI进行访问。共享的数据通过查询获取,同时也支持写入。因此,一个拥有合适权限的应用程序可以添加、删除和更新其它任一应用程序的数据&... 阅读全文
摘要:
在本章的前面,你增强了To-Do List例子的功能,能够在会话间保存Activity UI的状态。那只是一半的工作;在接下来的例子里,你将创建一个私有的数据库来保存那些to-do项:1. 创建一个新的ToDoDBAdapter类。它将用于管理你的数据库交互。创建私有的变量来储存SQLiteDatabase对象和调用程序的上下文。添加构造函数来得到所属程序的上下文,并且为数据库的名和版本以及to-... 阅读全文
摘要:
SQLiteDatabase类暴露了特定的方法,如insert、delete和update等方法,这些方法包装了执行这些动作所需的SQL语句。尽管如此,execSQL方法允许你在数据库表上执行任何有效的SQL语句,而这些动作就是你想要手动执行的。在任何时候,如果你修改了底层数据库的值,你都应该调用任一在当前表上浏览的Cursor的refreshQuery方法。插入新行为了创建一个新行,构造一个Co... 阅读全文
摘要:
通过Cursor来提取实际的值,首先要使用moveTo<位置>方法来将Cursor移动到结果集中正确的行上。在Cursor位于正确的行上的前提下,使用类型安全的get方法(传入一个列索引)来获得储存在当前行、特定列的值,如下面的片段所示:String columnValue = myResult.getString(columnIndex);数据库的实现应该公布列索引的静态变量,这样能... 阅读全文
摘要:
所有的数据库查询都返回一个结果集的游标。这种方式使得Android通过在需要的时候检索和释放行和列的值来更加有效地管理资源。执行一个数据库的查询,使用query方法,传入以下参数:❑ 一个可选的布尔值来指定结果集中每一行是否是独一无二的。❑ 需要查询的表的名字❑ 一个字符串数组,标明在结果集中包含的列项。❑ 一个where语句来定义要返回的行。你可以包含?通配符,它会被selectionArgs参... 阅读全文
摘要:
当你设计你的数据库时,这里有几点建议你应该考虑一下:❑ 文件(例如位图或音频文件)一般不储存在数据库的表中。一般用字符串来存储文件的路径,最好是一个正确的Content Provider URI。❑ 当没有严格的需求时,强烈建议所有的表中都包含一个自动增加的关键字段,它可以用作每行的独一无二的索引值。值得注意的是,当你计划用Content Provider来共享你的表,那么,独一无二的ID字段是必... 阅读全文
摘要:
你可以在程序上下文中用openOrCreateDatabase方法来创建和打开一个数据库,而不用借助SQLiteOpenHelper类的帮忙。建立一个数据库包括两个步骤。第一,调用openOrCreateDatabase来创建一个新的数据库。然后,在返回的数据库实例上调用execSQL方法来运行SQL命令行,它将创建你的表单和相互之间的关系。一般的过程如下面的片段所示:private static... 阅读全文