尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

HarmonyOS 关系型数据库完全指南:从核心特性到增删改查实战

HarmonyOS 关系型数据库完全指南:从核心特性到增删改查实战 引言上节课学习了用户首选项存储它适用于数据体积小、访问频率高、响应速度快的场景。但面对数据结构固定、数据量较大、需要支持复杂查询与事务处理的场景则需要使用关系型数据库。本节课将系统讲解 HarmonyOS 关系型数据库的基础概念、核心特性、运行机制、核心 API 与完整开发流程并结合开发实践介绍增删改查操作的具体实现。核心内容关系型数据库概述与首选项存储对比对比维度首选项存储关系型数据库适用场景体积小、访问频率高、对响应速度要求快数据结构固定、数据量较大、需支持复杂查询与事务处理数据组织Key-Value 键值对二维表格结构事务支持不支持 ACID支持 ACID 事务查询能力仅支持按 Key 查询支持复杂 SQL 查询数据以二维表格结构存储示例姓名年龄班级学号小王15一班0101小李15二班0201定义关系型数据库Relational Database, RDB是基于关系模型管理数据的数据库。HarmonyOS 中基于 SQLite 实现提供完整本地数据库管理机制对外提供增删改查接口也支持直接执行自定义 SQL 语句满足复杂场景需求。关系型数据库四大核心特点数据完整性通过约束条件与外键关系保证数据一致性与准确性避免数据损坏或不一致。事务处理支持事务保证并发环境下数据一致性。事务的ACID 属性原子性、一致性、隔离性、持久性保障数据安全稳定。复杂查询能力支持复杂 SQL 查询可处理多表关联查询与复杂分析操作适配复杂业务场景。数据安全性提供用户身份验证、权限控制、数据加密等安全能力保护敏感数据不被非法访问。关系型数据库运行机制与核心 API运行架构应用 → 关系型数据库框架(kits Framework) → 第三方开源组件(SQLite组件)底层以 SQLite 作为持久化存储引擎支持 SQLite 的全部特性包括事务、索引、视图、触发器、外键、参数化查询、预编译 SQL 语句。三个核心实体对象对象作用RdbPredicates用于定义数据库操作的筛选条件代表数据实体的属性/关系确定条件表达式结果。支持多条件拼接默认使用and()连接多个条件。RdbStore提供管理关系型数据库所有操作方法的接口是执行增删改查的入口。ResultSet执行查询接口后返回的查询结果集合提供遍历与获取数据的方法。核心工作流程导入模块 → 获取 RdbStore 实例 → 使用 RdbPredicates 确定操作条件 → 执行数据库操作 → 使用 ResultSet 获取查询结果关系型数据库开发步骤详解步骤 1导入模块import { relationalStore } from kit.ArkData;步骤 2获取 RdbStore 实例通过调用relationalStore.getRdbStore方法获取实例第一个参数为应用上下文第二个参数为数据库配置信息。relationalStore.getRdbStore(this.context, STORE_CONFIG, (err: BusinessError, rdbStore: relationalStore.RdbStore) { store rdbStore; if (err) { console.error(Get RdbStore failed, code is ${err.code}, message is ${err.message}); return; } console.info(Get RdbStore successfully.); });数据库配置参数说明参数名类型必填说明namestring是数据库文件名也是数据库唯一标识符securityLevelSecurityLevel是设置数据库安全级别encryptboolean否指定数据库是否加密默认不加密true加密false不加密步骤 3使用 RdbPredicates 定义操作条件创建RdbPredicates时需要指定要操作的表名之后链式调用条件方法设置筛选条件默认使用and()拼接多条件。// 匹配数据表的 NAME 列中值为 Lisa 且 SALARY 列中值为 200.5 的字段 let predicates new relationalStore.RdbPredicates(EMPLOYEE); predicates.equalTo(NAME, Lisa) .and() .equalTo(SALARY, 200.5);步骤 4执行数据库操作增删改操作通过RdbStore提供的对应接口执行查询操作执行后获取ResultSet结果集。步骤 5处理查询结果通过ResultSet提供的goToNextRow()方法遍历所有结果行通过getValue()方法获取指定列的数据需要强制转换为对应数据类型。let resultSet: relationalStore.ResultSet await store.query(predicates, [ID, NAME, SALARY]); while (resultSet.goToNextRow()) { const id resultSet.getColumnIndex(ID); const name resultSet.getColumnIndex(NAME); // 获取数据并处理 }开发实践功能说明案例功能范围实现一个关系型数据库读写演示案例包含以下功能应用初始化首次启动时获取RdbStore实例创建并初始化两张数据表运动表、计划表。重置功能清空数据并恢复初始内容执行全量查询。筛选功能根据条件筛选数据库记录。编辑功能修改现有数据库记录。删除功能删除选中的数据库记录。新增功能向数据库添加新记录。关键实现说明1. 创建数据表使用RdbStore.execute()方法执行建表 SQL 语句。该方法支持执行非查询类操作、建表/删表/改表操作不支持执行查询操作查询需要使用专门的query接口。const CREATE_TABLE_SQL CREATE TABLE IF NOT EXISTS Sport ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, type TEXT ) ; store.execute(CREATE_TABLE_SQL);2. 批量插入数据使用batchInsert方法参数为表名和封装为ValuesArray的待插入数据。const valuesArray: relationalStore.ValuesArray [ { name: 跑步, type: 有氧 }, { name: 游泳, type: 有氧 } ]; store.batchInsert(Sport, valuesArray);3. 全量查询调用query方法遍历ResultSet获取所有记录。let resultSet store.query(SELECT * FROM Sport); while (resultSet.goToNextRow()) { // 获取每条记录 }4. 条件查询通过RdbPredicates设置筛选条件后执行查询。let predicates new relationalStore.RdbPredicates(Sport); predicates.equalTo(type, 有氧); let resultSet store.query(predicates);5. 更新记录使用update方法传入封装好的新数据和RdbPredicates筛选条件。let values { name: 慢跑 }; let predicates new relationalStore.RdbPredicates(Sport); predicates.equalTo(id, 1); store.update(values, predicates);6. 删除记录使用delete方法传入RdbPredicates筛选条件即可完成删除。let predicates new relationalStore.RdbPredicates(Sport); predicates.equalTo(id, 1); store.delete(predicates);7. 新增记录使用insert方法传入表名和待插入数据即可。let values { name: 瑜伽, type: 静态 }; store.insert(Sport, values);总结本节课系统讲解了 HarmonyOS 关系型数据库的核心知识关系型数据库概述基于关系模型管理数据HarmonyOS 基于 SQLite 实现适合数据结构固定、数据量较大、需支持复杂查询与事务处理的场景。四大核心特点为数据完整性、事务处理ACID、复杂查询能力、数据安全性。运行机制应用调用关系型数据库框架框架底层使用 SQLite 作为持久化存储引擎支持 SQLite 全部特性。三个核心 API 对象为RdbPredicates筛选条件、RdbStore操作入口、ResultSet查询结果集。开发流程导入模块→获取 RdbStore 实例→使用 RdbPredicates 定义操作条件→执行数据库操作→使用 ResultSet 处理查询结果。实践功能通过execute建表不支持查询、batchInsert批量插入、query全量/条件查询、update更新记录、delete删除记录、insert新增记录完成完整的 CRUD 操作。
返回列表