Android -- 面试 -- 数据库升级策略
升级:重写onUpgrade方法
- 确定 相邻版本 的差别,从版本1开始依次迭代更新,先执行v1到v2,再v2到v3……
- 为 每个版本 确定与现在数据库的差别,为每个case撰写专门的升级代码。
降级
onDowngrade()数据库降级:比如从数据库4降级到数据库3必须重写该方法。
@Override public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { super.onDowngrade(db, oldVersion, newVersion); }
迁移数据:
- 将现有表重命名为临时表;
- 创建新表;
- 将临时表的数据导入新表(注意处理修改的列);
- 删除临时表。
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(); } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Safari Private 模式下 localStorage 的问题
现如今好多浏览器都有「隐身模式」,Safari 管这叫「Private Browing」,国内各种牌子的套壳浏览器叫「无痕浏览」。私以为从命名上来说,倒是国内更中文一些。 这种模式下浏览网页踏雪无痕,雁过不留声。具体来说,与正常模式的区别是浏览器不会保存历史记录,没有页面缓存,所有本地数据也都是临时的,页面关闭后无法还原。譬如本文下面要讲到的 localStorage。 并不是说这种模式下绝对安全,服务器仍然对用户的浏览是有感知的。所以 IP 什么的依然可以追踪。这世界并不如我们天真设想般烂漫。 --------- LOG --------- 00:01:00 - 一位不具名用户在零点零一分进行了访问 00:02:00 - 一位不愿透露姓名的用户在零点零二分打开了你丢弃在服务器 `社会科学/东方艺术鉴赏/东瀛国浮世绘` 中的资源 `ae2bx86.jpg` 从功能上来说,普通用户大概鲜有人知道这一功能(产品情怀就这样被用户无视,PM 们默默泪目),而开发者则利用其干净的特点来开发调试,排除程序之外的因素导致 bug 的可能。 因为所有本地数据都是临时的,那么问题来了,如果网页代码中还使...
- 下一篇
Tiny4412 Android5.0 定制media codecs相关的格式(二)
http://blog.csdn.net/morixinguan/article/details/73149058 上一节说到4412的在Android 5.0源代码中支持了许多的格式,那么这些格式最终又是怎么确定的呢? 找到以下这个文件: android-5.0.2/frameworks/base/media/java\android/media/MediaFile.java /* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applic...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块