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 1407Android-sharedUserId数据权限 An ... -
Android Service学习之本地服务
2012-04-18 10:28 798转: Android Service学习之本地服务 htt ... -
match_parent和fill_parent的区别 .
2012-02-18 11:49 1781match_parent和fill_parent的区别 有 ... -
Android中SQLiteOpenHelper类的onUpgrade方法的作用
2012-02-09 11:50 4560Android中SQLiteOpenHelper类的onUpg ... -
Android启动各种系统服务线程
2012-02-09 10:59 1895Android启动各种系统服务 ... -
android
2012-02-08 09:22 0Android数据库内容变化的监听 首先介绍内容监 ... -
在线升级Android应用程序的思路
2012-02-07 11:34 820在线升级Android应用程序的思路 http://www. ... -
Android数据库内容变化的监听
2012-02-07 11:31 5990Android数据库内容变化的监听 首先介绍内容监 ... -
android中的数据库操作
2012-02-07 10:50 1409android中的数据库操作 ... -
SQLiteOpenHelper类与自动升级数据库
2012-02-07 10:31 2238SQLiteOpenHelper类与自动升级数据库 S ... -
SQLite外键的实现
2012-02-07 10:30 1655SQLite外键的实现 SQLite现在的版本还不支持 ... -
Android到处都在使用的回调分析
2011-12-21 15:53 3499Android到处都在使用的回调分析 ... -
android中LayoutInflater的使用
2011-12-21 11:35 1898android中LayoutInflater的使用 ... -
SIM卡满处理流程分析
2011-12-19 15:15 1843SIM卡满处理流程分析 //框架层分析 // SMSD ... -
短信发送状态报告流程分析
2011-12-19 15:07 2350短信发送状态报告流程分析 //应用层分析: //Sms ... -
Android平台 短信接送流程剖析(含编码)
2011-12-16 15:29 3194Android平台 短信接送流程剖析(含编码) ... -
修改语言环境方法
2011-12-16 15:20 993修改语言环境方法 private void se ... -
Android平台 短信发送流程剖析(含编码)
2011-12-12 17:12 4259Android平台 短信发送流程剖析(含编码) 本文对A ... -
Android 应用程序签名
2011-11-27 11:34 1602Android 应用程序签名 转:http://www ...
相关推荐
SQLiteDatabase,SQLiteOpenHelper,ContentProvider,ContentResolver,ContentObserver,ContentObserverable的使用简单使用。
private SQLiteDatabase sqLiteDatabase; private static final UriMatcher URI_MATCHER=new UriMatcher(UriMatcher.NO_MATCH); private final String TAG="provider"; private static final String authority=...
Android 四大件组件之一ContentProvider demo案例,下载...存储数据使用系统自带的数据库SQLIteOpenHelper,自定义ContentProvider,通过ContentResolver访问ContentProvider,实现数据新增、查找、删除、修改等功能。
SQLiteOpenHelper; sqlite3 tools; 8.4、手势(Gesture): 8.5、自动朗读(TTS): 8.6、网络存储: 第9章、使用ContentProvider实现数据共享 9.1、数据共享标准:ContentProvider; Uri; ContentResolver; 9.2...
SQLiteOpenHelper; sqlite3 tools; 8.4、手势(Gesture): 8.5、自动朗读(TTS): 8.6、网络存储: 第9章、使用ContentProvider实现数据共享 9.1、数据共享标准:ContentProvider; Uri; ContentResolver; 9.2...
8.3.1 简介SQLiteDatabase 321 8.3.2 创建数据库和表 323 8.3.3 使用SQL语句操作SQLite 数据库 323 8.3.4 使用sqlite3工具 325 8.3.5 使用特定方法操作SQLite 数据库 327 8.3.6 事务 329 8.3.7 ...
8.3.1 简介SQLiteDatabase 321 8.3.2 创建数据库和表 323 8.3.3 使用SQL语句操作SQLite 数据库 323 8.3.4 使用sqlite3工具 325 8.3.5 使用特定方法操作SQLite 数据库 327 8.3.6 事务 329 8.3.7 SQLiteOpenHelper类 ...
8.3.1 简介SQLiteDatabase 321 8.3.2 创建数据库和表 323 8.3.3 使用SQL语句操作SQLite 数据库 323 8.3.4 使用sqlite3工具 325 8.3.5 使用特定方法操作SQLite 数据库 327 8.3.6 事务 329 8.3.7 SQLiteOpenHelper类 ...