-
Notifications
You must be signed in to change notification settings - Fork 2
移动端数据库更新策略
fushang318 edited this page Feb 10, 2014
·
7 revisions
APP升级导致的业务变动,必然会有sqlite数据库中数据表结构的变化需求,当APP最新版本已经是5.0时,用户设备中的APP版本可能是1.0,2.0,3.0等等,当用户分别从这些版本升级到5.0时,如何平滑的升级用户设备中的APP数据库结构是一个需要考虑的问题
// APP数据库的基础声明
public class BaseDBHelper extends SQLiteOpenHelper {
public BaseDBHelper(Context context, String name, CursorFactory factory,int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table ....";
db.execSQL(sql);
}
// oldVersion 表示的是用户设备中对应APP的目录下的 sqlite 数据库数据文件的版本
// newVersion 表示的是目前运行的APP需要的数据库版本,对应 构造方法中的 version
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists ...");
// 在这里写 增加数据表,修改表结构,删除数据表,升级数据等操作
}
}
// 类似如下的方式使用数据库
SQLiteDatabase db = new BaseDBHelper(context,DATABASE_NAME, null, CURRENT_DATABASE_VERSION).getWritableDatabase();
// SQLiteDatabase 对象上有查询,插入,升级,等对数据表进行操作的方法
我们可以根据 onUpgrade 方法中的 oldVersion newVersion 两个参数为基础设计出数据库 migrate 方案
或者看看有没有什么开源的 orm 方案中,已经解决了这个问题