SQLiteOpenHelper SQLiteDatabase ContentProvider三者的关系
SQLiteOpenHelper类
synchronized void |
close()
Close any open database object.
|
synchronized SQLiteDatabase |
getReadableDatabase()
Create and/or open a database.
|
synchronized SQLiteDatabase |
getWritableDatabase()
Create and/or open a database that will be used for reading and writing.
|
abstract void |
onCreate(SQLiteDatabase db)(在派生类中必须被重写)
Called when the database is created for the first time.
|
void |
onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion)
Called when the database needs to be downgraded.
|
void |
onOpen(SQLiteDatabase db)
Called when the database has been opened.
|
abstract void |
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)(在派生类中必须被重写)
Called when the database needs to be upgraded.
|
它提供了两个重要的方法,分别是
onCreate(SQLiteDatabase db):用户初次使用软件时生成数据库,一旦数据库存在则不会调用此方法。函数是在第一次创建数据库的时候执行的,仅仅生成DataBaseHelper对象(SQLiteOpenHelper类型)的时候是不会调用该函数的,而只有当调用DataBaseHelper对象的getReadableDataBase时或者是调用了getWritableDataBase时,如果是第一次创建数据库,那么就一定会调用onCreate()函数。
onUpgrade(SQLiteDatabase db,int oldVersion,int vewVersion):用于升级软件时更新数据库表结构,如增加表、列字段等操作。
提示一下,在软件升级前,最好对原有数据进行备份,在新表建好后把数据导入新表中。
实现了这两个方法,就可以用它的getWritableDatabase()和getReadableDatabase()来获得数据库(SQLiteDatabase 对象)。
强调下:当第一次创建数据库时,当实现DataBaseHelper对象的getReadableDataBase时或者是调用了getWritableDataBase时,系统自动调用oncreater()方法(当然程序中也可以调用);
如果用户需要升级数据库表结构,需要主动调用onUpgrade(SQLiteDatabase db,int oldVersion,int vewVersion),传入一个新的版本的号。
继承该类并覆盖onCreate,onUpgrade,onOpen(可选)。我们可以创建或打开数据库,并对其进行升级。通过getReadableDataBase和getWritableDataBase获取SQliteDataBase实例。通过close关闭数据库。
SQLiteDatabase 类:
SQLiteDatabase是关于数据库操作,封装了管理数据库的各种方法,包括insert 、delete、 update 、query 、执行SQL命令等操作。 其beginTransaction(),endTransaction()方法封装了开始及停止一个事务的相关SQL命令,yieldfContended()方法将暂停当前事务的运行已让其它等待线程执行。当该方法返回时,一个未标记为成功的新事务将被创建。 setMaximunSize(long)用于设置数据库文件的最大长度。 compileStatement(String)将一个SQL命令字符串转换为SQliteStatement对象,用于后续管理或执行。query()执行指定的SQL语句进行查询,并返回cursor作为结果。get/setVersion()获取霍设置数据库版本号。 insert(),update(),delete()执行数据库记录插入、更新、删除等工作。 execSQL() 执行一条非查询类型的SQL命令,如:创建表,删除记录等。 setLocal()设置数据库的local。 可惜美中不足的是: 1. 其不支持创建数据库 2. 其不支持版本更新 或者说其不知道如何做 因为具体数据的差异 鉴于以上的缺陷,有一个辅助类可以完成上面功能,那就是:SQLiteOpenHelper 获得了SQLiteDatabase对象以后,我们就可以通过调用SQLiteDatabase的实例方法来对数据库进行操作了(通常,在ContentProvider派生类对象中,有一个SQLiteOpenHelper实例,通过SQLiteOpenHelper实例的getWritableDataBase或getReadableDataBase方法可以得到SQLiteDatabase对象实例)。
ContentProvider类 待续。。。
发表评论
文章已被作者锁定,不允许评论。
-
资料上传备份
2012-07-02 07:28 0对付对付对付对付 -
Android-sharedUserId数据权限
2012-05-02 10:16 1445Android-sharedUserId数据权限 An ... -
Android Service学习之本地服务
2012-04-18 10:28 863转: Android Service学习之本地服务 htt ... -
match_parent和fill_parent的区别 .
2012-02-18 11:49 1840match_parent和fill_parent的区别 有 ... -
Android中SQLiteOpenHelper类的onUpgrade方法的作用
2012-02-09 11:50 4601Android中SQLiteOpenHelper类的onUpg ... -
Android启动各种系统服务线程
2012-02-09 10:59 1936Android启动各种系统服务 ... -
android
2012-02-08 09:22 0Android数据库内容变化的监听 首先介绍内容监 ... -
在线升级Android应用程序的思路
2012-02-07 11:34 880在线升级Android应用程序的思路 http://www. ... -
Android数据库内容变化的监听
2012-02-07 11:31 6033Android数据库内容变化的监听 首先介绍内容监 ... -
android中的数据库操作
2012-02-07 10:50 1451android中的数据库操作 ... -
SQLiteOpenHelper类与自动升级数据库
2012-02-07 10:31 2283SQLiteOpenHelper类与自动升级数据库 S ... -
SQLite外键的实现
2012-02-07 10:30 1717SQLite外键的实现 SQLite现在的版本还不支持 ... -
Android到处都在使用的回调分析
2011-12-21 15:53 3546Android到处都在使用的回调分析 ... -
android中LayoutInflater的使用
2011-12-21 11:35 1932android中LayoutInflater的使用 ... -
SIM卡满处理流程分析
2011-12-19 15:15 1882SIM卡满处理流程分析 //框架层分析 // SMSD ... -
短信发送状态报告流程分析
2011-12-19 15:07 2392短信发送状态报告流程分析 //应用层分析: //Sms ... -
Android平台 短信接送流程剖析(含编码)
2011-12-16 15:29 3228Android平台 短信接送流程剖析(含编码) ... -
修改语言环境方法
2011-12-16 15:20 1039修改语言环境方法 private void se ... -
Android平台 短信发送流程剖析(含编码)
2011-12-12 17:12 4334Android平台 短信发送流程剖析(含编码) 本文对A ... -
Android 应用程序签名
2011-11-27 11:34 1641Android 应用程序签名 转:http://www ...
相关推荐
SQLiteOpenHelper和ContentProvider是Android开发中的两个重要组件,它们都与数据存储和访问有关,但各自扮演的角色和使用场景有所不同。 SQLiteOpenHelper是Android系统提供的一个用于管理SQLite数据库的辅助类。...
SQLiteDatabase,SQLiteOpenHelper,ContentProvider,ContentResolver,ContentObserver,ContentObserverable的使用简单使用。
`SQLiteOpenHelper`提供了一个`getWritableDatabase()`方法来获取可读写的`SQLiteDatabase`实例,通过这个实例执行SQL语句。例如,插入数据: ```java public boolean insertData(String name, int age) { ...
4. **增删改查操作**:在ContentProvider的insert()、update()、delete()方法中,我们将解析Uri获取需要操作的数据,然后构造相应的SQL语句,通过SQLiteDatabase对象执行。例如,insert()方法通常会调用...
在Android开发中,ContentProvider是四大组件之一,它扮演着数据共享和访问的重要角色。ContentProvider使得应用程序可以将自己的数据结构化,并提供给其他应用进行安全的读写操作,包括增、删、改、查等基本功能。...
你需要继承SQLiteOpenHelper类,重写`onCreate()`和`onUpgrade()`方法。`onCreate()`用于首次创建数据库时执行的初始化操作,而`onUpgrade()`则在数据库升级时调用。 2. **创建表**:在`onCreate()`中,你可以使用...
在ContentProvider中,你需要根据UriMatcher匹配到相应的操作,并调用SQLiteOpenHelper的方法对数据库进行增删改查操作。比如在query()方法中,你可以这样查询数据: ```java @Override public Cursor query(Uri ...
本示例着重讲解如何创建一个针对单一数据库表的ContentProvider,帮助初学者理解其工作原理和使用方法。 首先,我们要明白ContentProvider的基本结构。ContentProvider继承自android.content.ContentProvider类,...
在ContentProvider内部,你可以创建一个SQLiteOpenHelper子类,用于管理数据库的创建、升级以及对数据库的CRUD操作。例如: ```java private static class DatabaseHelper extends SQLiteOpenHelper { // 数据库...
SQLite是一个轻量级、嵌入式的关系型数据库,它是Android系统默认支持的数据库系统。ContentProvider则是Android框架提供的一种机制,用于在应用程序之间共享数据,同时也可用于管理SQLite数据库。接下来,我们将...
2. **数据库操作**:ContentProvider通常与SQLite数据库配合使用,因此需要创建一个SQLiteOpenHelper子类来处理数据库的创建、升级以及版本管理。 3. **UriMatcher**:这是一个工具类,用于解析传入的URI,确定应该...
在 Android 中,我们通常通过 `SQLiteOpenHelper` 类来管理数据库的版本和生命周期,同时使用 `SQLiteDatabase` 对象执行 SQL 命令。 1. **创建数据库**:首先,你需要继承 `SQLiteOpenHelper` 类并重写 `onCreate...
`SQLiteOpenHelper`类用于创建和升级数据库,而`SQLiteDatabase`类提供了执行SQL语句的方法。 6. **测试ContentProvider**:在Demo中,开发者可能创建了一个测试Activity,通过`ContentResolver`发起查询、插入、...
在Android开发中,ContentProvider是一种系统级别的服务,用于在应用程序之间共享数据。它扮演着数据桥梁的角色,使得不同应用能够安全、有效地访问彼此的数据。在这个小例子中,我们将深入理解如何利用...
SQLite是Android内置的关系型数据库,适用于存储大量结构化的数据。创建数据库和表通常在SQLiteOpenHelper的子类中完成,通过`onCreate()`和`onUpgrade()`方法。例如,创建一个名为`MyDatabase`的数据库和一个`...
private SQLiteDatabase sqLiteDatabase; private static final UriMatcher URI_MATCHER=new UriMatcher(UriMatcher.NO_MATCH); private final String TAG="provider"; private static final String authority=...
3. **SQLite数据库**:大多数情况下,ContentProvider的数据存储在SQLite数据库中,你可以通过`SQLiteOpenHelper`类来创建和管理数据库。 4. **Cursor**:ContentProvider返回的数据通常以Cursor对象的形式,它是对...
Android系统内置了SQLite库,提供了SQLiteOpenHelper类来辅助数据库的创建、升级和版本管理,以及SQLiteDatabase类用于执行SQL语句。 三、ContentProvider与SQLite结合 1. 创建数据库和表 首先,我们需要创建一个...
三、ContentProvider 的使用 创建了ContentProvider 之后,我们可以使用ContentResolver 来操作数据库。 ``` ContentResolver resolver = getContentResolver(); Uri uri = Uri.parse("content://...