zoukankan      html  css  js  c++  java
  • android 数据库的升级与降级解决方案

      在我们写的程序中不避免的需要升级.或者说需要改变业务逻辑,那这个时候就需要修改数据库的字段,来适应不同的表结构

      我们一般写数据库都是操作一个继承至 SQLiteOpenHelper 的类

        然后我们需要实现它的构造方法

        public MyDatabaseOpenHelper(Context context) {
            super(context//上下文对象, DB_NAME//数据库名称, null, version//版本号);
        }

      然后我们需要注意的是一个方法 public void onCreate(SQLiteDatabase db) 

      这个方法是在数据库不存在的时候被调用的,当然这个"不存在"是系统帮助我们来寻找的

      在这个方法里面我们可以创建当前版本必须要的表,或者表对应的数据

        然后还有两个回调函数,也需要注意的,因为它们关联着我们要说的升级与降级

          1.升级操作 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

            在这里做升级的操作,也就是说,当你改变数据库的 version的时候,系统会自动判断,你当前的版本是高于,还是低于你要创建的版本

            当然这里是低于!!!

          升级的具体思路就是,只添加字段,不做其他操作.因为,你升级以后还是需要用到老版本的一些属性,所有说,这样说有很大的好处,

                    然后就是当数据库不存在时,也需要创建对应版本的数据库

          2.降级操作 public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion)

             大概步骤就是

                  1.备份当前版本数据库表  主要是为了后面的copy

                  2.修改当前数据库表名   主要是为了降级的表名称

                  3.创建降级版本数据库表,并将当前数据copy到降级表中    主要是为了提高用户黏度

                  4.删除备份表       主要是为了下次降级不会建表冲突

              然后就是一个很重要的操作了,那就是,如果当你降级不成功怎么办?

                我们的解决方案也很简单,那就是加一个try/catch() 来捕获这个异常,然后创建对应表的数据结构

          

                         

    Hold on, everything is possible.
  • 相关阅读:
    Python——pygame入门实例
    Python——基础函数2
    Python——面向对象的三特征
    201521123083《Java程序设计》第四周学习总结
    201521123083《Java程序设计》第二周学习总结
    201521123083 《Java程序设计》第6周学习总结
    《Java程序设计》第1周学习总结
    201521123083《Java程序设计》第5周学习总结
    《Java程序设计》第3周学习总结
    201521123083 《Java程序设计》第7周学习总结
  • 原文地址:https://www.cnblogs.com/student-note/p/6117977.html
Copyright © 2011-2022 走看看