博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android -- 面试 -- 数据库升级策略
阅读量:6888 次
发布时间:2019-06-27

本文共 1295 字,大约阅读时间需要 4 分钟。

升级:重写onUpgrade方法

  1. 确定 相邻版本 的差别,从版本1开始依次迭代更新,先执行v1到v2,再v2到v3……
  2. 为 每个版本 确定与现在数据库的差别,为每个case撰写专门的升级代码。

降级

onDowngrade()数据库降级:比如从数据库4降级到数据库3必须重写该方法。

@Override    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {        super.onDowngrade(db, oldVersion, newVersion);    }

 

迁移数据:

  1. 将现有表重命名为临时表;
  2. 创建新表;
  3. 将临时表的数据导入新表(注意处理修改的列);
  4. 删除临时表。
protected void upgradeTables(SQLiteDatabase db, String tableName, String columns)  {      try      {          db.beginTransaction();          // 1, 将现有表重命名为临时表        String tempTableName = tableName + "_temp";          String sql = "ALTER TABLE " + tableName +" RENAME TO " + tempTableName;          execSQL(db, sql, null);          // 2, 创建新表          //onCreateTable(db);         createNewTableX(db);        // 3, 将临时表数据导入新表中        sql =   "INSERT INTO " + tableName +                  " (" + columns + ") " +                  " SELECT " + columns + " FROM " + tempTableName;          execSQL(db, sql, null);          // 4, 删除临时表         execSQL(db, "DROP TABLE IF EXISTS " + tempTableName, null);          db.setTransactionSuccessful();      }      catch (SQLException e)      {          e.printStackTrace();      }      catch (Exception e)      {          e.printStackTrace();      }      finally      {          db.endTransaction();      }  }

 

转载地址:http://amqbl.baihongyu.com/

你可能感兴趣的文章
IoC
查看>>
一、 Python的基本概念
查看>>
子元素margin影响父元素的问题
查看>>
MUI功能列表
查看>>
为什么沃尔玛和其他大型零售商正联手创建移动支付?
查看>>
ios注册通知NSNotificationCenter(一)
查看>>
poj 3252 Round Numbers (组合数)
查看>>
求两个长度相等的排序数组的上中位数
查看>>
video 全屏时 隐藏controls
查看>>
利用腾讯云为你的域名申请并配置免费SSL一年
查看>>
【转】asp.net 利用Global.asax 捕获整个解决方案中的异常错误
查看>>
一道算法题-换钱
查看>>
Python私有属性set 和get方法
查看>>
最短路算法详解
查看>>
YII2中操作数据库的方式
查看>>
python input() 与raw_input()
查看>>
mysql数据库 --表查询
查看>>
Python中xlrd常用用法整理
查看>>
文档管理系统介绍
查看>>
Python调用函数带括号和不带括号的区别
查看>>