您的位置:首页 > 数据库 > SQL

使用SQLiteOpenHelper的onUpgrade实现数据库版本升级

2014-11-11 13:45 609 查看



我这里说的数


From http://www.cnblogs.com/vir56k/archive/2013/04/18/3028688.html

据库版本指的是:我们的应用的程序的数据库的用户版本(user_version).比如说下面的情形:

2013年4月,我们第一次 发布了 我们的应用,数据库版本是1。
2013年5月,我们第二次 发布了 我们的应用,数据库版本是2。由于业务需要,我们更改了数据库里的某个表的表结构。
这时候就有这样的难题出现:
有些用户已经下载了4月份的版本1,并且已经使用了,很多数据存储在数据库了,这个时候,他想安装新的版本2,怎么办? 怎么才能让数据不丢失?
有的用户直接装了5月份的版本,那这些用户就直接使用了新的表结构格式。
可能以后还有版本3,4,N,怎么保证“数据不丢失的情况下“让用户手机里的数据库跟着升级?
------
我们记得SQLiteOpenHelper的onUpgrade方法,那么它是如何工作呢?我们该如何使用他?下面先说说使用它的方式。
解决方案:
我们在4月份数据库建立时,使用下面的方式

  我们看到,在这里,我们的onCreate方法里,写个建表的语句,这个表有3个字段。



我们注意看下数据库的版本



..............................
于是到了五月份,由于业务需要,我们想添加新的字段到这个表里。我们这样写代码:

  这个时候,onCreate方法里,是新的建立表的方式。而不同的是 onUpgrade方法里我们检测了这样的变化,如果 是从版本1到版本2,我们执行了一段”添加列的sql语句“。这段代码,仅仅在符合这样的场景里执行。
通过上面的方式,我们就完成了一次的数据库升级的操作。android会判断 数据库的版本号,并自动的调用onUpgrade方法。



看看数据库的版本



------------------
下面是一些扩展内容?
我们通过SQLite Expert看到的这个user_version是什么东西?经过在网络上反复查到资料,这个其实是sqlite数据库的"PRAGMA ".
看看描述:

在数据库中,我们可以使用这样写 sql语句来查询它:
PRAGMA main.user_version
或者来设置它的值
PRAGMA main.user_version = 1
更多内容参考sqlite的官方描述。

参考:http://www.sqlite.org/pragma.html
http://dev.10086.cn/cmdn/bbs/thread-25063-1-1.html
http://blog.sina.com.cn/s/blog_6ffbcfdb0100vjhs.html
http://stackoverflow.com/questions/12778551/how-to-check-sqlite-database-file-and-get-my-defined-database-user-version
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: