HarmonyOS 数据持久化 关系型数据库之 初始化操作

上文 HarmonyOS 数据持久化之首选项 preferences 我们有说用户首选项
但它只能处理一些比较简单的数据类型结构 的持久化处理
如果是一些批量较大 结构较为复杂的数据结构 那么 首选项就无法满足了 我们就要选择 关系型数据库

通过 SQLite 组件实现的一种本地数据库,具备所有关系型数据库特性 例如(事务 存储过程 视图)等等
因为是本地型数据库 所以不需要网络 性能也非常强大

因为 harmonyOS 关系型数据库 内容 比较复杂 我们分成三个部分

1 初始化数据库
2 对数据库进行 增删改 操作
3 查询操作

那么 我们就先来说 初始化数据库的内容

首先 这个东西 我们要封装起来 成一个类
在模块下的 ets目录 下 创建一个 utils 目录
下面创建一个 relationalClass.ts文件
在这里插入图片描述
然后 我们类基本骨架写成这样


//创建类对象 名称叫 relationalClass
class relationalClass{initTaskDB(context) {}}//new 一个relationalClass类的实力对象
const relational = new relationalClass()
//将实力对象导出
export default relational as relationalClass

然后 我们初始化的逻辑 就要写在 initTaskDB 中 因为初始化 需要UIAbility 中的 上下文 ConText
所以 这里 我们先接这个参数

首先 我们要导包

import relationalStore from "@ohos.data.relationalStore";

这也是 harmonyos 内置的 不需要安装 直接导入就可以用

然后 是做一个 rdb配置

const config = {name:'MyApplication.db',securityLevel: relationalStore.SecurityLevel.S1
}

在这里插入图片描述
这里 对象中 nameo 是我们数据库本地文件名 因为这个相当于是本地文件读写
然偶 securityLevel 字段就是 relationalStore.SecurityLevel 下的 S1 到 S4 值越大 安全级别越高
因为 这里 我们就是做个练习 所以 S1就够用了

键表的话 就用 sql 语句就好了 如果不懂sql 可以参考我的文章
MySQL新建表 演示单表增删查改

const sql = `CREATE TABLE IF NOT EXISTS TASK(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT NOT NULL,FINISHED bit`

这里 语句发生了 一点点变化

CREATE TABLE IF NOT EXISTS 表名 这句是基本一样的
第一 字段 ID
NTEGER 数字类型
PRIMARY KEY 设置组件唯一记录 不能重复
AUTOINCREMENT 数字属性自增 sql中是 AUTO_INCREMENT 这里 不要中间的横杠了

NAME 字段
这里字符串 变成了 TEXT 文本类型
NOT NULL 非空约束

FINISHED 字段

TASK 表 三个字段

有一些不太一样 但大体还是看得懂的

我们 整体代码 编写如下

//导入 relationalStore 首选项操作对象 这个包是harmonyos自带的 无需安装
import relationalStore from "@ohos.data.relationalStore";//创建类对象 名称叫 relationalClass
class relationalClass{//记录 rdbStore 操作数据库对象private rdbStore:relationalStore.RdbStoreinitTaskDB(context) {// 1.rdb配置const config = {name:'MyApplication.db',securityLevel: relationalStore.SecurityLevel.S1}// 2.初始化sql语句const sql = `CREATE TABLE IF NOT EXISTS TASK(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT NOT NULL,FINISHED bit`// 获取 RDBrelationalStore.getRdbStore(context, config,(err, rdbStore)=> {if(err) {console.log('testTag', "获取rdbstore失败!");return}//执行创建表sqlrdbStore.executeSql(sql);console.log('testTag', "创建表sql执行完毕!");//记录 rdbStarethis.rdbStore = rdbStore;})}}//new 一个relationalClass类的实力对象
const relational = new relationalClass()
//将实力对象导出
export default relational as relationalClass

我们定义了一个成员变量 rdbStore
用于接受 getRdbStore 返回的 rdbStore对象 因为你之后要操作数据库 是需要通过它执行的

然后 我们 initTaskDB中 上来声明了 config 和 sql 内容 这个我们上面讲过
relationalStore.getRdbStore 获取 rdbSore 需要两个参数 UIAbility上下文的 ConText 和 我们上面声明的config
这里 会返回两个参数 如果 err有内容 说明 获取失败了 我们直接输出日志
如果 没有
则 通过 rdbStore.executeSql 执行我们的sql 需要一个sql字符串做参数

成功后 记录 rdbStore

然后 这里 我们找到模块入口文件
导入 我们写的这个类 然后在onCreate 生命周期中 使用我们写的 initTaskDB
传入 我们 UIAbility 上下文的 ConText
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/272487.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Learn OpenGL 04 纹理

纹理环绕方式 纹理坐标的范围通常是从(0, 0)到(1, 1),那如果我们把纹理坐标设置在范围之外会发生什么?OpenGL默认的行为是重复这个纹理图像(我们基本上忽略浮点纹理坐标的整数部分),但OpenGL提供了更多的选择&#xf…

YOLOv8.1.0安装

【YOLO】YOLOv8训练环境配置 python 3.8.18 cuda 11.3.1 cudnn 8.2.1 pytorch 1.12.1-gpu版 - 知乎 (zhihu.com) 一、Anaconda 默认装好了可用的Anaconda,安装教程见Win10系统anaconda安装 - 知乎 (zhihu.com) 二、在虚拟环境下用conda安装 1.创建虚拟环境 …

【决策树】预测用户用电量

决策树预测用户用电量 文章目录 决策树预测用户用电量  👉引言💎一、 数据预处理数据预处理初步数据分析 二、 机器学习算法决策树回归预测用电量决策树模型介绍:回归预测 三、 可视化结果四、 数据分析与结论代码如下 👉引言&a…

UE5.1_使用技巧(常更)

UE5.1_使用技巧(常更) 1. 清除所有断点 运行时忘记蓝图中的断点可能会出现运行错误的可能,务必运行是排除一切断点,逐个排查也是办法,但是在事件函数多的情况下会很复杂且慢节奏,学会一次性清除所有很有必…

如何使用LEAKEY轻松检测和验证目标服务泄露的敏感凭证

关于LEAKEY LEAKEY是一款功能强大的Bash脚本,该脚本能够检测和验证目标服务中意外泄露的敏感凭证,以帮助广大研究人员检测目标服务的数据安全状况。值得一提的是,LEAKEY支持高度自定义开发,能够轻松添加要检测的新服务。 LEAKEY主…

生成对抗网络 (GAN)

生成对抗网络(Generative Adversarial Networks,GAN)是由Ian Goodfellow等人在2014年提出的一种深度学习模型。GAN由两部分组成:一个生成器(Generator)和一个判别器(Discriminator)&…

嘉绩咨询:八位一体产业创新,赋能品牌新零售

探索新零售领域不断创新高峰的嘉绩咨询在今天全面展现了其“八位一体”产业创新模式,该模式旨在为新零售品牌提供全方位的赋能服务。立足于广州的企业战略导航专家,吹响了帮助中国品牌实现全球化发展的号角。 嘉绩咨询的核心业务涵盖招商教育、招商落地、…

FREERTOS DAY3

作业:1.总结任务的调度算法,把实现代码再写一下, FreeRTOS中默认的调度算法是 抢占式调度时间片轮转 1.抢占式调度:任务优先级高的可以打断任务优先级低的执行(适用于不同优先级) 2.时间片轮转&#xff…

西门子PLC中的程序块及类别详解

在PLC的编程中,程序块是指一组逻辑控制代码,用于实现系统中特定的控制功能。程序块主要分为四类,包括函数块(FB)、函数(FC)、数据块(DB)和组织块(OB&#xff…

【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )

文章目录 一、使用 ffmpeg 命令提取 音视频 数据1、提取音频数据 - 保留封装格式2、提取视频数据 - 保留封装格式3、提取视频数据 - 保留编码格式4、提取视频数据 - 重新编码5、提取音频数据 - 保留编码格式6、提取音频数据 - 重新编码 一、使用 ffmpeg 命令提取 音视频 数据 1…

我的 4096 创作纪念日

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

交叉编译qt5.14.2

qt源码下载地址:qt-everywhere-src-5.14.2.tar.xz 1.修改qt-everywhere-src-5.14.2/qtbase/mkspecs/linux-arm-gnueabi-g/qmake.conf文件: # # qmake configuration for building with arm-linux-gnueabi-g #MAKEFILE_GENERATOR UNIX CONFIG …

Spring Boot 多环境配置

Spring Boot 多环境配置 在现代的软件开发中,通常需要将应用程序部署到不同的环境中,如开发环境、生产环境和测试环境等。每个环境可能需要不同的配置参数,例如数据库连接信息、日志级别等。在 Spring Boot 中,我们可以通过简单的…

基于Kronig-Penney能带模型的MATLAB求解与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于Kronig-Penney能带模型的MATLAB求解与仿真.综合利用 MATLAB提供的求解常微分方程、矩阵行列式、代数表达式化简及绘图等函数 ,可使 Kronig-Penney能带模型分析…

html--彩虹爱心

文章目录 js内容cssreset.min.cssstyle.css html内容 js内容 const colors ["#e03776","#8f3e98","#4687bf","#3bab6f","#f9c25e","#f47274"]; const SVG_NS http://www.w3.org/2000/svg; const SVG_XLINK &q…

数据分析-Pandas数据画箱线图

数据分析-Pandas数据画箱线图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&#xff…

解决gpt无法发送对话的问题

问题描述 如图,今天登上去发现怎么无法发送消息 解决 可能是cookie问题,重新删除了就行了 cookie删除后,需要重新登录,主题色也重置为原来的白色了

把握机遇:2024年游戏行业春招提前批全攻略

当前,国内游戏行业正处于高速发展期,各大游戏公司对应届毕业生的人才需求十分旺盛。这一趋势不仅为即将步入职场的学生们提供了广阔的就业前景,也为游戏产业的创新和多元化发展注入了新鲜血液。 在这样的大环境下,2024年春季提前批…

七、门控循环单元语言模型(GRU)

门控循环单元(Gated Recurrent Unit,GRU)是 LSTM 的一个稍微简化的变体,通常能够提供同等的效果,并且计算训练的速度更快。 门控循环单元原理图:参考门控循环单元 原理图中各个图形含义: X(t)&a…

训练验证码之ddddocr一个图文视频教学

目录 一、推荐文章视频一、ddddocr环境配置二、字符集验证码训练三、ocr_api_server服务搭建 一、推荐文章视频 文章原文来自这里:训练验证码-4、ddddocr训练字符验证码 , 原文文章末尾有视频介绍更多内容见训练验证码合集 一、ddddocr环境配置 1.打开…