HarmonyOS 鸿蒙Next基于关系型数据库的数据持久化
基于关系型数据库的数据持久化 HarmonyOS 鸿蒙Next
介绍
关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。
demo详情链接
https://gitee.com/scenario-samples/data-management
HarmonyOS 鸿蒙Next基于关系型数据库的数据持久化 场景描述
关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。
- 场景一:基于RDB已提供API的数据库基础使用
- 场景二:基于executeSql、querySql执行增删改查复杂SQL语句
- 场景三:事务的使用
- 场景四:批量插入数据的不同实现方式及性能对比
- 场景五:数据库备份与恢复
- 场景六:全文检索(FTS)使用思路
场景一:基于RDB已提供API的数据库基础使用
- 方案 通过insert、update、delete、query接口及关系型数据库谓词predicates 的数据库基础操作。 RdbPredicates:数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。常用的方法有equalTo,notEqualTo,or,and,isnull,between,orderby,groupby等。
场景二:基于executeSql、querySql执行增删改查复杂SQL语句
- 方案 在实际使用过程中,复杂的SQL语句可能无法直接通过场景一提供的方式实现,此时需要开发者通过executeSql、querySql接口执行自定义SQL语句。 executeSql能够执行包含指定参数但不返回值的SQL语句,如创建表、创建索引、数据库触发器等场景。 querySql能够根据指定SQL语句查询数据库中的数据,并返回查询结果ResultSet结果集。如递归查询、子查询等场景。
场景三:事务的使用
- 方案 数据库事务可以保证指一组数据库操作要么全部执行成功,要么全部回滚。鸿蒙关系型数据库提供了事务相关接口 beginTransaction、commit、rollBack。本例通过模拟一组操作中,有一条操作失败后,回滚已经执行的SQL语句。
场景四:批量插入数据的不同实现方式及性能对比
- 方案 分别使用insert、事务insert、batchInsert三种方式各自插入5000条数据,统计各自任务耗时
场景五:数据库备份与恢复
- 方案 在数据库的使用过程中,数据库可能会因为数据丢失、数据损坏、脏数据等而不可用情况,为了预防这种情况,可以通过backup接口,提前备份数据库数据到本地文件中,当发生意外后,可以通过restore接口,从指定的数据库备份文件恢复数据库。
场景六:全文检索(FTS)使用思路
- 方案 鸿蒙关系型数据库底层使用的是Sqlite,在Sqite中FTS的核心是倒排索引,它是一种将词汇映射到出现该词汇的文档集合的数据结构。在创建FTS虚拟表时,SQLite会为每个词汇生成一个倒排索引,记录该词汇在哪些文档(即数据库记录)中出现。倒排索引使得全文搜索能够快速找到包含特定词汇的文档,而无需遍历整个数据库。 FTS虚拟表(Full-Text Search Virtual Table)是SQLite中实现全文搜索的一种特殊表结构。它用于存储全文索引数据,包括倒排索引的信息。虽然FTS虚拟表在查询时表现得像普通的SQLite表,但其实现和存储方式与普通表有很大不同。 使用全文检索时,创建FTS表需要使用CREATE VIRTUAL TABLE语句,执行全文搜索需要使用MATCH关键字,当前鸿蒙关系型数据库并没有直接提供相关接口,但是数据库底层是支持的,因此可以通过executeSql、querySql执行相关SQL语句。
更多关于HarmonyOS 鸿蒙Next基于关系型数据库的数据持久化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS 鸿蒙Next基于关系型数据库的数据持久化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,基于关系型数据库的数据持久化通常依赖于SQLite或其他兼容的关系型数据库管理系统。以下是如何在鸿蒙Next场景化代码中实现这一点的简要说明:
鸿蒙系统提供了对SQLite的内置支持,因此开发者可以直接使用SQLite进行数据库操作。在场景化代码中,你需要首先确保已正确导入SQLite相关的库(鸿蒙SDK通常会包含这些库)。
接下来,创建数据库连接,指定数据库文件路径和名称。使用SQL语句创建表结构,然后执行INSERT、UPDATE、DELETE等SQL操作来管理数据。为了查询数据,可以使用SELECT语句,并结合SQLite提供的API来获取结果集。
鸿蒙的场景化编程模型可能允许你在特定的生命周期函数或事件处理函数中执行数据库操作。确保在执行数据库操作时考虑线程安全,特别是在UI线程和后台线程之间交互时。
示例代码(伪代码,具体API需参考鸿蒙官方文档):
// 假设已导入SQLite库
Database db = openDatabase("path/to/database.db");
executeSQL(db, "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");
executeSQL(db, "INSERT INTO users (name) VALUES ('Alice')");
ResultSet rs = executeQuery(db, "SELECT * FROM users");
while (rs.next()) {
// 处理结果集
}
closeDatabase(db);