Android使用SQLite数据库升级时候保留旧数据的另一种思路

硬盘有价 数据无价 为了保留客户信息,服务端将所有关于用户的行为全部保存到数据库中
为了服务器文件的安全,一般服务器都会配备两块硬盘 另一块专门实时备份服务器硬盘的数据,可见数据的重要性
手机端一般不会使用数据库保存用户数据,直接走网络上传云端,让服务器去保存,但凡用到保存数据库,证明数据极为重要
手机端使用sqlLite进行数据库操作的时候,如果出现修改字段的情况(包括添加/删除字段),手机端数据库升级过程中都会将老的表里的数据删除,下面提供下自己数据保存的一个思路:

标题大致思路

1、将数据库中只保留最基础的信息
2、经常改变或者可能会改变的字段使用json保存
3、发生字段改变的时候,记录添加字段的app版本号
4、取数据的时候,添加app版本号判断,在添加字段的版本位置,添加对添加字段的解析

数据库表结构

Android使用SQLite数据库升级时候保留旧数据的另一种思路_第1张图片

数据库bean定义

Android使用SQLite数据库升级时候保留旧数据的另一种思路_第2张图片

缓存json对应的bean

Android使用SQLite数据库升级时候保留旧数据的另一种思路_第3张图片

将对象转成json存入数据库 取的时候再将json转为对象

Android使用SQLite数据库升级时候保留旧数据的另一种思路_第4张图片

如果出现升级添加了字段 在对应的json转对象的方法中,对相应版本号对应的新增字段进行解析,这样可以兼容老版本的数据库中json数据的解析

Android使用SQLite数据库升级时候保留旧数据的另一种思路_第5张图片

从数据库中取出json进行解析

Android使用SQLite数据库升级时候保留旧数据的另一种思路_第6张图片

总结

这种方法就是避开了数据库升级操作,保留历史数据
将字段用json的方式进行保存,在有更新操作的时候,根据app的版本号进行json新加字段的解析
网上也有其他方式的sqlLite升级保留数据的方法,思路是将老数据库复制出来,新库创建后再还原老数据库数据
由于项目对数据要求比较谨慎,但凡有对数据使用删除的操作都不敢尝试,最后就想到这个笨方法
记录一下,方便字段少,结构简单的数据库操作

你可能感兴趣的:(手机端)