您的位置:首页 > 移动开发 > Android开发

Android SQLiteOpenHelper源码解读

2015-12-15 09:56 218 查看
SQLiteOpenHelper.class 介绍:
本类是Google 在Android上使用SQLite基础上封装的针对数据库进行创建和管理的一个操作类,不需要人为下载和安装Sqlite。通过继承改写该类的OnCreate、OnUpdate方法实现创建和更行等数据操作,so easy!!! ,SQLite是一种什么数据库,请自行查阅,这里只需要知道他是通过数据库级别的进程锁实现数据共享即可
重要方法:
(1)构造方法:SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version,DatabaseErrorHandler errorHandler),该类提供了两个构造方法,这里列出的是第二个构造方法,其中第一个构造方法实质也是调用第二个的构造方法,只不过最后DatabaseErrorHandler一项传了null值,题外话:Android源码中构造参数的调用机制,都暗藏玄机。这个方法主要提供一些数据库创建的必要信息,例如:数据库名字(创建操作使用)当前数据库版本号(更新操作使用)定制的错误处理handler等等;注意调用该方法并不会立即创建数据库只有获取数据库进行操作是才会创建数据库(例如:调用getWriteableDatabase()方法时)
(2) 创建方法: public abstract void onCreate(SQLiteDatabase db);可以在此方法你里面见表等操作
(3)更新数据库的方法: public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);在调用上面构造方法初始化数据库是,要求的数据库版本号必须大于1,小于1会抛出IllegalArgumentException异常,而且升级之后的版本号数必须大于之前的版本号数,也会抛出SQLiteException异常,提示无法降低数据库版本更新,补充如果数据库是只读状态,也有抛出SQLiteException的可能,小技巧:更新表的时候一般try一下下,数据库初始化一般在启动应用时,如果数据库出问题应用可能就打不开,情况的糟糕程度可想而知。。。
(4)核心方法: private SQLiteDatabase getDatabaseLocked(boolean writable);这个是穿件数据库和更新数据的的核心代码,流程:首先判断数据库是否存在,一般close数据库数据库就会重新走该方法进行创建流程,先判断数据库存不存在,不存在判断是创建只读还是可读写的数据库,如果你的数据库名字有的话就可以创建成功,及时没有也会尝试创建一个null名字的数据库,然后是配置数据库,最后是判断数据库版本号的创建,具体判断是当前版本号==0,当前版本号>最新版本号,当前版本号<最新版本号
(5)温馨提示:数据库打开操作结束后,及时关闭数据库是一个好习惯,从源码的角度来看可以减少很多异常的出现,同时谢谢,各位看官批评指正!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: