Android -- 面试 -- 数据库升级策略
2023-09-14 08:59:00 时间
升级:重写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(); } }
相关文章
- 基于chromium for android开发Android浏览器
- android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」
- Android源码学习之六——ActivityManager框架解析
- android退出app代码,Android应用退出代码各种方式
- android sdk根目录,Android SDK位置
- android 定时器实例,Android定时器和Handler用法实例分析
- robotium android,Robotium 测试Android apk安装包
- android telephony 原理解析与开发指南_Android逆向pdf
- Android resource linking failed_android:authorities
- Android | Handler.runWithScissors 解析
- android attrs获取_关于Android attrs 自定义属性的说明
- Android平台GB28181设备接入端PTZ指令对接详解
- Android Studio 中 添加作者 时间 之类的 注释
- Android 数据库加密 android-database-sqlcipher 开源版本编译过程
- 【错误记录】Flutter / Android 报错 ( AAPT: error: attribute android:requestLegacyExternalStorage not found )
- Android File Transfer (mac-安卓手机文件传输)
- 【Android 逆向】x86 汇编 ( cmp 比较指令 | test 比较指令 )
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )
- 【错误记录】Android Studio 集成 ARoute 编译报错 ( 兼容 support 库和 androidx 库 | add ‘tools:replace=“android:appCo )
- [android] 数据库的事务详解手机开发
- android Universal Image Loader for Android 说明文档 (1)详解手机开发
- Android中的ProgressBar的android:indeterminate详解手机开发
- android判断横竖屏详解编程语言
- Android中实现多Tab页应用
- Android的Touch事件处理机制介绍
- android自定义Android菜单背景的代码
- Android软件自动更新功能实现的方法
- Android实现加载广告图片和倒计时的开屏布局