往期推文全新看点
- 学鸿蒙开发的优劣势,你清晰吗?发起你了解一下!
- 鸿蒙(HarmonyOS)北向开发知识点记录~
- 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
- 鸿蒙应用开发与鸿蒙体系开发哪个更有前景?
- 嵌入式开发适不得当做鸿蒙南向开发?看完这篇你就了解了~
- 对于大前端开发来说,转鸿蒙开发究竟是福照旧祸?
- 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
- 记录一场鸿蒙开发岗位面试经历~
- 连续更新中……
介绍
本示例介绍使用关系型数据库的接口来进行数据库起落级场景实现
效果预览图
使用说明
- 加载完成后有版本升级以及版本规复两种按钮
- 点击版本升级下的”升级至V2“按钮,则数据库版本会从V1升级至V2,且在表格处表现V1和V2版本表格字段对比。
- 点击版本升级下的”升级至V3“按钮,若当前是V1版本,则会执行V1升级至V3的逻辑,且在表格处表现V1和V3版本表格字段对比。
- 版本规复下的按钮会在升级至V1以上版本时可点击,如步调二中升级至V2版本后,则”规复到V1“按钮可点击,点击后数据库版本回退至V1版本
实现思绪
数据库版本升级有两种方案
方案一:直接升级,必要实现各版本到目标版本的实现逻辑,优点在于性能好,缺点是逻辑复杂且较难维护。
方案二:一步一步升级到最新版本,只必要实现紧邻版本的升级逻辑,优点在于逻辑简单,便于维护,缺点在于比方案一性能差。
在本示例中两种方案都有体现,此中从V1->V2->V3用的方案二,从V1->V3使用的方案一,具体实现步调如下:
- 使用临时表方案,在升级时将旧表重命名为临时表,并创建一张与旧表未重命名前的名字雷同的新表,分批次取出临时表中数据进行转换存入新表中,数据迁移完毕后删除临时表。
- // 开启事务
- 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);
复制代码
- 为方便扩展迭代,在父类中定义整体逻辑,子类只需继承父类,重写字段转换逻辑即可。
- /**
- * TODO: 知识点: 新老版本字段转换逻辑(版本升级只需要实现这个方法即可)
- * @param resultSet 查询结果集
- * @param targetVersion 目标版本
- * @returns 目标版本格式数据
- */
- abstract transform(resultSet: relationalStore.ResultSet, targetVersion: number): ValuesBucket;
复制代码
- 根据数据库当前版本和需升级至版本,选择对应的升级逻辑。
- 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)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、体系定制移植……等)技术知识点。
《鸿蒙 (Harmony OS)开发学习手册》(共计892页):https://gitcode.com/HarmonyOS_MN/733GH/overview
如何快速入门?
1.基本概念
2.构建第一个ArkTS应用
3.……
鸿蒙开发面试真题(含参考答案):
《OpenHarmony源码剖析》:
- 搭建开发环境
- Windows 开发环境的搭建
- Ubuntu 开发环境搭建
- Linux 与 Windows 之间的文件共享
- ……
- 体系架构分析
- 构建子体系
- 启动流程
- 子体系
- 分布式任务调理子体系
- 分布式通信子体系
- 驱动子体系
- ……
OpenHarmony 设备开发学习手册:https://gitcode.com/HarmonyOS_MN/733GH/overview
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |