赞
踩
本示例介绍使用关系型数据库的接口来进行数据库升降级场景实现
1. 加载完成后有版本升级以及版本恢复两种按钮
2. 点击版本升级下的”升级至V2“按钮,则数据库版本会从V1升级至V2,且在表格处显示V1和V2版本表格字段对比。
3. 点击版本升级下的”升级至V3“按钮,若当前是V1版本,则会执行V1升级至V3的逻辑,且在表格处显示V1和V3版本表格字段对比。
4. 版本恢复下的按钮会在升级至V1以上版本时可点击,如步骤二中升级至V2版本后,则”恢复到V1“按钮可点击,点击后数据库版本回退至V1版本
方案一:直接升级,需要实现各版本到目标版本的实现逻辑,优点在于性能好,缺点是逻辑复杂且较难维护。
方案二:一步一步升级到最新版本,只需要实现紧邻版本的升级逻辑,优点在于逻辑简单,便于维护,缺点在于比方案一性能差。
在本示例中两种方案都有体现,其中从V1->V2->V3用的方案二,从V1->V3使用的方案一,具体实现步骤如下:
1.使用临时表方案,在升级时将旧表重命名为临时表,并创建一张与旧表未重命名前的名字相同的新表,分批次取出临时表中数据进行转换存入新表中,数据迁移完毕后删除临时表。
// 开启事务 dbUtils.beginTransaction(); // 获取当前数据库版本 const oldVersion: number = dbUtils.getStoreVersion(); // 将旧表改为临时表 await dbUtils.updateTableName(Constants.STUDENT_TABLE, Constants.STUDENT_TABLE + oldVersion); // 创建新表 const newTableColumnTypeMap: string[][] = CommonUtils.getTableColumnTypeMapByVersion(targetVersion); await dbUtils.createTable(Constants.STUDENT_TABLE, newTableColumnTypeMap); dbUtils.commit(); // 自定义迁移逻辑 let lastId: number = -1; let flag: boolean = false; await this.migrate(lastId, oldVersion, targetVersion, flag); // 删除旧表 await dbUtils.dropTable(Constants.STUDENT_TABLE + oldVersion, targetVersion);
2.为方便扩展迭代,在父类中定义整体逻辑,子类只需继承父类,重写字段转换逻辑即可。
/**
* TODO: 知识点: 新老版本字段转换逻辑(版本升级只需要实现这个方法即可)
* @param resultSet 查询结果集
* @param targetVersion 目标版本
* @returns 目标版本格式数据
*/
abstract transform(resultSet: relationalStore.ResultSet, targetVersion: number): ValuesBucket;
3.根据数据库当前版本和需升级至版本,选择对应的升级逻辑
switch (currentVersion) { case Constants.V1: await this.v1DataService.onUpgrade(version); break; case Constants.V2: await this.v2DataService.onUpgrade(version); break; default: throw new Error('The database version to which you need to upgrade is incorrect'); }
工程结构&模块类型
databaseupgrade // har类型 |---components | |---CustomFormComponents.ets // 自定义表格组件 |---constants | |---Constants.ets // 常量类 |---service | |---DataService.ets // 业务层-版本升级逻辑 |---utils | |---CommonUtils.ets // 工具类 | |---DBUtils.ets // 数据库操作封装 |---view | |---DatabaseUpgrade.ets // 视图层-数据库版本升级案例交互界面
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以要有一份实用的鸿蒙(HarmonyOS NEXT)学习路线与学习文档用来跟着学习是非常有必要的。
针对一些列因素,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。
gitee.com/MNxiaona/733GH
gitee.com/MNxiaona/733GH
1.基本概念
2.构建第一个ArkTS应用
3.……
gitee.com/MNxiaona/733GH
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……
gitee.com/MNxiaona/733GH
gitee.com/MNxiaona/733GH
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。