android 数据库升级
2015-09-19 13:13
519 查看
情况:
在android应用程序升级时,如果数据库表结构发生了变化(修改字段,添加新表),就需要同时对数据库进行升级。
程序如何知道数据库需要升级?
数据库实现方法中有必须继承两个方法:onCreate和onUpgrade,他们的调用过程如下:
升级数据库,需要考虑新老版本问题。
[相关链接] http://blog.csdn.net/u012974916/article/details/24582825
在android应用程序升级时,如果数据库表结构发生了变化(修改字段,添加新表),就需要同时对数据库进行升级。
程序如何知道数据库需要升级?
数据库实现方法中有必须继承两个方法:onCreate和onUpgrade,他们的调用过程如下:
1. 如果数据库*文件不存在*,SQLiteOpenHelper在自动创建数据库后只会调用onCreate方法, 在该方法中一般需要创建数据库中的表、视图等组件。在创建之前,数据库是空的,因此, 不需要先删除数据库中相关的组件。 2. 如果数据库文件存在,并且当前的版本号高于上次创建或升级时的版本号, 3SQLiteOpenHelper会调用onUpgrade方法,调用该方法后,会更新数据库版本号。 在onUpgrade方法中除了创建表、视图等组件外,还需要首先删除这些相关的组件, 因此,在调用onUpgrade方法之前,数据库是存在的,里面还有很多数据库组件。 3. 综合上述两点,可以得出一个结论。如果数据库文件不存在,只有onCreate方法 被调用(该方法只会在创建数据库时被调用1次)。如果数据库文件存在,并且当前 版本较高,会调用onUpgrade方法来升级数据库,并更新版本号。 4.版本降级情况在这里不进行讨论
升级数据库,需要考虑新老版本问题。
4.1 比如用户是正常升级 按照正常升级流程进行处理(升级语句写在 OnUpgrade() 中并增加version +1 ) 4.2 比如不是升级而是安装最新版 这样的话是不会走 OnUpgrade()方法的!那么就需要 **数据库中在发布应用同时, 包含最新,最全的表**。这样,就可以解决升级问题
升级逻辑
#进行修改或者删除操作 (对于一些细节,请自行查阅相关文档) private String CREATE_ALARM = "create table xxx(id INTEGER )"; private String CREATE_Table_HealthLog = "create table xxx(id INTEGER )"; @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { switch (newVersion) { case 2: db.execSQL(CREATE_ALARM); db.execSQL(CREATE_Table_HealthLog); break; default: break; } }
[相关链接] http://blog.csdn.net/u012974916/article/details/24582825
相关文章推荐
- android事件传递机制的详细了解
- Android定调的发展
- android 内存优化
- Android开发之SurfaceView详解
- Android Studio如何关联SVN
- 【MDCC技术大咖秀】Android内存优化之OOM
- Android Studio——LinerLayout
- Android-MaterialRefreshLayout
- Android Studio安装之后简单设置
- android sdk更新
- android studio-友盟多渠道打包方式
- android sdk目录详解
- Android不同分辨率图片实际显示大小的计算
- 【MDCC技术大咖秀】Android内存优化之OOM
- Android 动画效果(二):四种基础动画的 **动态设置、动画监听、组合动画
- android 6 sdk/ndk下载地址
- Android ListView单选的实现总结
- android 图片缩放
- 贝塞尔曲线原理和android相关API接口
- Android学习简单总结