一种APP版本更新时数据库降级的用户数据保护方法技术

技术编号:16327290 阅读:37 留言:0更新日期:2017-09-29 19:07
本发明专利技术涉及一种APP版本更新时数据库降级的用户数据保护方法,包括如下步骤:步骤1,获取当前已安装好的数据库名及数据库版本号;步骤2,获取将要安装的数据库名及数据库版本号;步骤3,判断当前已安装好的数据库名和将要安装的数据库名是否相同;相同,则转步骤4;步骤4,判断当前已安装好的数据库版本号和将要安装的数据库版本号的异同;或不对数据库进行更新操作,或数据库升级,或数据库降级;数据库的表,表的命名规则为:前缀_表名_后缀,其中后缀等于数据库版本号。本发明专利技术,应用简单,可有效保护用户数据,避免因为数据库降级导致的用户数据丢失问题。

【技术实现步骤摘要】
一种APP版本更新时数据库降级的用户数据保护方法
本专利技术涉及用户数据保护
,具体说是一种APP版本更新时数据库降级的用户数据保护方法。
技术介绍
在Android系统中,内置有轻量级数据库SQLite,SQLite甚至不需要安装和启动服务进程,它只是一个后缀为.db的数据库文件,但它支持SQL语句。关于SQLite的使用需要一个SQLiteDataBase类,该类底层就是一个数据库文件,一个该类代表一个数据库,对数据库的操作也要通过SQLiteDataBase类。SQLiteDatabase类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作。SQLiteOpenHelper类是一个用来辅助管理数据库创建和版本升级问题的抽象类。我们可以继承这个抽象类,实现它的一些方法来对数据库进行自定义操作。下面两个方法必须重写:publicvoidonCreate(SQLiteDatabasedb)publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)onCreate:调用时机是用户首次安装应用后启动,或是清除App数据库文件后启动。这时可以在这个函数中完成初始的数据表的创建。onUpgrade:调用时机是用户在做应用更新,覆盖安装后启动,如果新版本中数据库版本号要比旧版本中的数据库版本号高则会调用。这时可以在这个函数中完成数据库版本升级带来的旧版本的兼容问题,以及数据迁移问题。用SQLiteOpenHelper类中的getWritableDatabase()和getReadableDatabase()方法可以获得数据库的引用。还有一个一般情况下不需要重写,但在应用出现逆向降级(如应用由版本号4降级安装版本号为3的包)时必须重写的方法onDowngrade,如果应用降级覆盖安装时没有重写该方法则会崩溃。另外SQLiteOpenHelper子类在构造实例时必须指定当前数据库的名称(name)、版本号(version)。而这里名称就决定了数据库存储时的文件名称,而这里的版本号与App在AndroidMainfest.xml定义的versionCode没有绝对关联。也就是在App更新时如果数据库的数据结构没有发生变化那么数据库的版本号则不用增加。数据库在做升级时我们能明确地知道当前我们要对各旧表进行什么样的操作来兼容新版本。但如果在数据库降级时,情况就不一样了。例如:开发版本2(相对于版本1这是一个新版本)时,我们不能明确地知道以后的新版本(比如版本3、版本4)的数据库结构走向是怎样的。这时,当用户从版本3回退到版本2,由于版本2在开发当时不能预知版本3的表结构,不知道版本3的数据表能否兼容到版本2(假如版本3升级时删除了一个版本2一直在用的表字段,这时回退数据结构可能就不兼容了)。因此,降级操作很可能导致用户数据的丢失,而这可能给用户带来不可弥补的损失,该问题显然需要加以解决,以避免影响用户的体验及用户数据的安全。另一种可能的情况是:有时候某APP自动的进行了升级操作,但用户可能觉得还是老版本好用,因此还想换回老版本,但又想保留数据,不希望因为换回老版本导致数据受到损失。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种APP版本更新时数据库降级的用户数据保护方法,应用简单,可有效保护用户数据,避免因为数据库降级导致的用户数据丢失问题。为达到以上目的,本专利技术采取的技术方案是:一种APP版本更新时数据库降级的用户数据保护方法,其特征在于,包括如下步骤:步骤1,获取当前已安装好的数据库名及数据库版本号;步骤2,获取将要安装的数据库名及数据库版本号;步骤3,判断当前已安装好的数据库名和将要安装的数据库名是否相同;相同,则转步骤4;不同,则:记录步骤1和步骤2获取的数据,转相应的处理;步骤4,判断当前已安装好的数据库版本号和将要安装的数据库版本号的异同;相同,则数据库直接沿用,不对数据库进行更新操作;数据库升级,则:转步骤5;数据库降级,则:转步骤6;步骤5,数据库升级,采用以下方式进行数据迁移:步骤5.1,在数据库中创建对应于新版本的数据库的表,表的命名规则为:前缀_表名_后缀,其中后缀等于数据库版本号,步骤5.2,将对应于旧版本的数据库的表中的用户数据,采用复制的方式迁移到对应于新版本的数据库的表;步骤6,数据库降级,采用以下方式进行数据迁移:步骤6.1,获取对应于旧版本的数据库的表的数量及表的命名;步骤6.2,根据表的命名,逐一判断数据库中是否有该表,对没有的表进行创建,表的命名规则为:前缀_表名_后缀,其中后缀等于数据库版本号。在上述技术方案的基础上,APP根据后缀,快速的判断出该表对应哪个版本的数据库。在上述技术方案的基础上,在表中存储每一笔数据时,记录该数据的创建时间;在表中更新每一笔数据时,记录该数据的更新时间;在数据库中存储数据库升级的日期及时间,在数据库中存储数据库降级的日期及时间。在上述技术方案的基础上,结合升级的日期及时间,判断出哪些数据是升级后的新数据,哪些数据是升级前的旧数据;结合降级的日期及时间,判断出哪些数据是降级后的新数据,哪些数据是降级前的旧数据。在上述技术方案的基础上,在获取用户数据时:方式一,根据当前已安装好的数据库版本号,将其作为后缀和表名按表的命名规则组合,得到当前版本表,直接从当前版本表中获取用户数据;方式二,判断是否有表名相同、后缀大于当前已安装好的数据库版本号的表存在,如有,则,该表为更新版本表,此时:进一步获取当前版本表中的表项名称,逐一在更新版本表中查询,有对应表项则读取其中记录的用户数据,无对应表项则返回一默认值作为用户数据;如无,则结束获取用户数据。在上述技术方案的基础上,利用升级的日期及时间或降级的日期及时间,对比当前时间,辅助判断是否有可能存在更新版本表。在上述技术方案的基础上,通过try/catch()来捕获异常,转相应处理。本专利技术所述的APP版本更新时数据库降级的用户数据保护方法,应用简单,可有效保护用户数据,避免因为数据库降级导致的用户数据丢失问题。具体实施方式本专利技术所述的APP版本更新时数据库降级的用户数据保护方法,包括如下步骤:步骤1,获取当前已安装好的数据库名及数据库版本号;例如:已经安装到手机当中的某APP,其当前已安装好的数据库名及数据库版本号为:DATABASE_NAME="Xx_crm.db";DATABASE_VERSION=3;步骤2,获取将要安装的数据库名及数据库版本号;例如:步骤1举例时所述的该某APP,需要重新安装,则该某APP的安装包可能有以下情况出现,当然,还有可能存在其他情况,不属于本专利技术讨论范围;情况1:DATABASE_NAME="Xx_crm.db";DATABASE_VERSION=4;显然这是属于数据库升级的情况;情况2:DATABASE_NAME="Xx_crm.db";DATABASE_VERSION=2;显然这是属于数据库降级的情况;步骤3,判断当前已安装好的数据库名和将要安装的数据库名是否相同;相同,则转步骤4本文档来自技高网
...

【技术保护点】
一种APP版本更新时数据库降级的用户数据保护方法,其特征在于,包括如下步骤:步骤1,获取当前已安装好的数据库名及数据库版本号;步骤2,获取将要安装的数据库名及数据库版本号;步骤3,判断当前已安装好的数据库名和将要安装的数据库名是否相同;相同,则转步骤4;不同,则:记录步骤1和步骤2获取的数据,转相应的处理;步骤4,判断当前已安装好的数据库版本号和将要安装的数据库版本号的异同;相同,则数据库直接沿用,不对数据库进行更新操作;数据库升级,则:转步骤5;数据库降级,则:转步骤6;步骤5,数据库升级,采用以下方式进行数据迁移:步骤5.1,在数据库中创建对应于新版本的数据库的表,表的命名规则为:前缀_表名_后缀,其中后缀等于数据库版本号,步骤5.2,将对应于旧版本的数据库的表中的用户数据,采用复制的方式迁移到对应于新版本的数据库的表;步骤6,数据库降级,采用以下方式进行数据迁移:步骤6.1,获取对应于旧版本的数据库的表的数量及表的命名;步骤6.2,根据表的命名,逐一判断数据库中是否有该表,对没有的表进行创建,表的命名规则为:前缀_表名_后缀,其中后缀等于数据库版本号。

【技术特征摘要】
1.一种APP版本更新时数据库降级的用户数据保护方法,其特征在于,包括如下步骤:步骤1,获取当前已安装好的数据库名及数据库版本号;步骤2,获取将要安装的数据库名及数据库版本号;步骤3,判断当前已安装好的数据库名和将要安装的数据库名是否相同;相同,则转步骤4;不同,则:记录步骤1和步骤2获取的数据,转相应的处理;步骤4,判断当前已安装好的数据库版本号和将要安装的数据库版本号的异同;相同,则数据库直接沿用,不对数据库进行更新操作;数据库升级,则:转步骤5;数据库降级,则:转步骤6;步骤5,数据库升级,采用以下方式进行数据迁移:步骤5.1,在数据库中创建对应于新版本的数据库的表,表的命名规则为:前缀_表名_后缀,其中后缀等于数据库版本号,步骤5.2,将对应于旧版本的数据库的表中的用户数据,采用复制的方式迁移到对应于新版本的数据库的表;步骤6,数据库降级,采用以下方式进行数据迁移:步骤6.1,获取对应于旧版本的数据库的表的数量及表的命名;步骤6.2,根据表的命名,逐一判断数据库中是否有该表,对没有的表进行创建,表的命名规则为:前缀_表名_后缀,其中后缀等于数据库版本号。2.如权利要求1所述的APP版本更新时数据库降级的用户数据保护方法,其特征在于:APP根据后缀,快速的判断出该表对应哪个版本的数据库。3.如权利要求1所述的APP版本更新时数据库降级的用户数据保护方法,其特征在于:在表中存储每...

【专利技术属性】
技术研发人员:王旭东
申请(专利权)人:北京酷我科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1