前言
软件要求
DevEco Studio 版本:构建版本:5.0.3.100
API Version : 11 Release
官方参考文档:HarmonyOS NEXT
利用关系型数据库SQLite实现笔记数据持久化功能
关系型数据库基于SQLite组件,适用于存储包含复杂关系数据的场景,比如一个班级的学生信息,需要包括姓名、学号、各科成绩等,又或者公司的雇员信息,需要包括姓名、工号、职位等,由于数据之间有较强的对应关系,复杂程度比键值型数据更高,此时需要使用关系型数据库来持久化保存数据。
使用SQLite为App打造笔记功能
两个基本概念:
谓词:数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。
结果集:指用户查询之后的结果集合,可以对数据进行访问。结果集提供了灵活的数据访问方式,可以更方便地拿到用户想要的数据。
使用Stage模型,官方Stage模型示例,如下图:
页面结构
├── database // 数据库
│ └── PrivacyNoteDB.ets
├── Privacy // 隐私空间
│ ├── PrivacySettingsPage.ets
│ ├── Note
│ │ └── NoteIndexPage.ets // 隐私笔记主页
│ │ ├── NoteFormPage.ets // 隐私笔记表单页
在模拟器中App的笔记入口页面,如下图:
数据库封装
使用关系型数据库实现数据持久化,需要获取一个RdbStore
封装代码如下:
export interface PrivacyNoteDBInfo extends ValuesBucket {
id: number | null
title: string
content: string
date_added: number
}
class PrivacyNoteDB {
private store: relationalStore.RdbStore | null = null
private tableName = 'privacy_note'
private sqlCreate = `CREATE TABLE IF NOT EXISTS ${this.tableName} (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
content TEXT NOT NULL,
date_added INTEGER NOT NULL
)`
async getStoreInstance() {
if (this.store) { return this.stor