码迷,mamicode.com
首页 > 移动开发 > 详细

Android数据库无缝升级方案

时间:2017-07-13 20:30:29      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:oid   说明   缺点   style   and   框架   ast   情况   git   

软件迭代过程中,业务不断更新,也要求软件持续更新。相应地,数据库更新升级也是不可避免的一个环节。Android作为客户端应用,数据库升级相对于服务端来说会麻烦一些。常见的升级方式有:

  1.删除旧表和数据,创建新表。优点是简单方便,缺点是丢失了旧数据。适用于应用数据依赖度低的情况。

  2.在代码中兼容处理各版本数据库,创建新表,迁移旧数据到新表。优点是保留了旧数据,缺点是需要处理兼容个版本数据库差异,比较麻烦。如果通过代码来记录维护版本差异,会导致代码臃肿且极易出错。

 

本文介绍一种简单无缝的数据库升级方案,也是属于上述的第二种方式,但是简单、高效地处理了数据库版本兼容。代码已实现在DBFramework中,这是一个轻量的数据库框架,简单、规范、高效,能够很好的处理表之间的继承关系,可以为你节省很多开发工作。

感兴趣的朋友可以了解一下。

 

数据库升级,其实是对其中的表进行升级。要更新表并且保留数据,这就必须要知道新表和旧表之间的差异。如果我们靠开发人员来记录各版本之间表的差异,无疑是一个困难和繁杂的工作。那么当我们进行数据库的时候,客户端应用有没有办法知道这些差异,知道有哪些表需要更新呢?答案是肯定的。在Sqlite中有一张叫做sqlite_master的系统表,其中记录了sqlite中的所有表信息,如下:

技术分享

可以看到,其中处理表名,还有表的创建语句。有了创建语句,我们就能解析出表的字段信息,然后对比新表和旧表的字段,有差异则说明表需要更新,反之则不需要更新。更简单的是我们直接用别骂来创建新表,然后直接对比新表和旧表的创建语句(忽略其中的表名),看是否有差异来决定是否更新表。然后再执行具体的更新操作,迁移数据,删除无用的表——旧表,抑或是以别名创建的但是无需更新的新表。

 

Android数据库无缝升级方案

标签:oid   说明   缺点   style   and   框架   ast   情况   git   

原文地址:http://www.cnblogs.com/oxgen/p/7161986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!