三分钟搞定Android数据库升级
16lz
2021-01-24
三分钟搞定Android数据库升级
比如旧表名称叫:account,重命名表名称叫:account_temp
步骤如下:
1:rename旧表名称把account改成account_temp
2:创建新表,表名称和原表名称一致也叫account或者其他名字account_v1
3:复制旧表account_temp(改名字后的表)数据到新表account_v1 中
4:Drop掉旧表
更新数据库前提是数据库版本要大于当前版本,在初始化Application的onCreate中执行:
myDatabaseHelper = new MyDatabaseHelper(DownLoadActivity.this,"user.db",null,2);
参数1是上下文context,
参数2是数据库名称,
参数3是一个用于返回Cursor的工厂,该参数为NULL, 表示使用默认的工厂
参数4是数据库版本,
如果大于当前数据库版本号,会自动执行
SQLiteOpenHelper子类中的onUpgrade方法,我们可以把以上4步直接写在这个方法中:
备注:account 是原表名称 ,account_temp是重命名后表名称
//1:重命名表名称String renameTable = "alter table account rename to account_temp";//2:创建新表String newTable = "create table account_v1 (" +"id integer primary key autoincrement," +"name text," +"account text,age integer)";//3:复制旧表数据到新表String copyTable = "insert into account_v1(id, name,account) select id,name,account from account_temp";//4:删除旧表String dropTable = "drop table account_temp";
@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if(newVersion > oldVersion){ //升级数据库前备份数据 db.execSQL(renameTable); db.execSQL(newTable); db.execSQL(copyTable); db.execSQL(dropTable); }}
数据库版本开始是1,查看数据库数据:
查看工具是在线查看,直接在app.build中配置,同步下:
dependencies { debugCompile 'com.amitshekhar.android:debug-db:1.0.0'}
访问地址看logcat:
这个里面很方便看到数据库数据变化结果
刚才是初始化的时候数据库数据,我们看到里面只有account表,里面一条数据,这个时候我们比如说下个版本要升级数据库,修改account里面的字段,新增age字段,我们需要怎么做呢?
myDatabaseHelper = new MyDatabaseHelper(DownLoadActivity.this,"user.db",null,2);
我们把最后一个参数改成2,这个时候运行后APP会自动执行onupgrade方法,并执行里面的4个步骤,
执行完后截图如下:
我们发现原来的account不见了,并且生产了个account_v1,但是里面数据都在还多了一个age字段,这就保证我们升级数据库的时候,数据不会丢失,并且还可以根据业务需求修改字段。
更多相关文章
- Android图灵机器人的实现(一)
- Android数据持久化之文件存储
- Android--GreenDao
- android 识别U盘以及读写文件的方法
- Android四大组之ContentProvider
- 更快实现Android多级树形选择列表
- Android上传图片的方式
- Android最新组件RecyclerView,替代ListView
- Android(安卓)学习笔记之数据存储SharePreferenced+File