HarmonyOS实战开发-如何在鸿蒙开发中使用数据库

ops/2024/10/22 12:30:05/

鸿蒙中的数据库基于SQLite组件,用来处理关系比较复杂的数据,本文将以WORKER表为例,为大家演示在鸿蒙开发中对数据库的增删改查操作。

1、首先导入数据库模块:

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

2、配置数据库信息:

const STORE_CONFIG :relationalStore.StoreConfig= {name: 'RdbTest.db', // 数据库文件名securityLevel: relationalStore.SecurityLevel.S1, // 数据库安全级别encrypt: false, // 可选参数,指定数据库是否加密,默认不加密dataGroupId: 'dataGroupID' // 可选参数,仅可在Stage模型下使用,表示为应用组ID,需要向应用市场获取。指定在此Id对应的沙箱路径下创建实例,当此参数不填时,默认在本应用沙箱目录下创建。};

3、获取RdbStore实例,要注意的是,此处的getContext(this)用于获取应用上下文:

const STORE_CONFIG :relationalStore.StoreConfig= {name: 'RdbTest.db', // 数据库文件名securityLevel: relationalStore.SecurityLevel.S1, // 数据库安全级别encrypt: false, // 可选参数,指定数据库是否加密,默认不加密// dataGroupId: 'dataGroupID' // 可选参数,仅可在Stage模型下使用,表示为应用组ID,需要向应用市场获取。指定在此Id对应的沙箱路径下创建实例,当此参数不填时,默认在本应用沙箱目录下创建。};const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS WORKER (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INTEGER, GENDER TEXT NOT NULL)'; relationalStore.getRdbStore(getContext(this),STORE_CONFIG,(err,store)=>{if (err) {console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`);return;}console.info('Succeeded in getting RdbStore.');// 当数据库创建时,数据库默认版本为0if (store.version === 0) {store.executeSql(SQL_CREATE_TABLE); // 创建数据表// 设置数据库的版本,入参为大于0的整数store.version = 3;}})

插入数据

插入的数据类型为ValuesBucket,需要先引入ValuesBucket模块:

import { ValuesBucket } from '@ohos.data.ValuesBucket';const valueBucket1: ValuesBucket = {'NAME': 'Bob','AGE': '18','GENDER': '男',};
if (store !== undefined) {(store as relationalStore.RdbStore).insert('WORKER', valueBucket1, (err: BusinessError, rowId: number) => {if (err) {console.error(`Failed to insert data. Code:${err.code}, message:${err.message}`);return;}console.info(`Succeeded in inserting data. rowId:${rowId}`);})
}

修改数据

以修改Bob的年龄为例:

const valueBucket2: ValuesBucket = {'NAME': 'Bob','AGE': '24','GENDER': '男',
};// 修改数据
let predicates = new relationalStore.RdbPredicates('WORKER');
predicates.equalTo('NAME', 'Bob'); 
if (store !== undefined) {(store as relationalStore.RdbStore).update(valueBucket2, predicates, (err: BusinessError, rows: number) => {if (err) {console.error(`Failed to update data. Code:${err.code}, message:${err.message}`);return;}console.info(`Succeeded in updating data. row count: ${rows}`);}
}

删除数据:

// 删除数据predicates.equalTo('NAME', 'Bob');if (store !== undefined) {(store as relationalStore.RdbStore).delete(predicates, (err: BusinessError, rows: number) => {if (err) {console.error(`Failed to delete data. Code:${err.code}, message:${err.message}`);return;}console.info(`Delete rows: ${rows}`);}
}

查询数据:

i

f (store !== undefined) {(store as relationalStore.RdbStore).query(predicates, ['ID', 'NAME', 'AGE', 'GENDER'], (err: BusinessError, resultSet) => {if (err) {console.error(`Failed to query data. Code:${err.code}, message:${err.message}`);return;}console.info(`ResultSet column names: ${resultSet.columnNames}, column count: ${resultSet.columnCount}`);// resultSet是一个数据集合的游标,默认指向第-1个记录,有效的数据从0开始。while (resultSet.goToNextRow()) {const id = resultSet.getLong(resultSet.getColumnIndex('ID'));const name = resultSet.getString(resultSet.getColumnIndex('NAME'));const age = resultSet.getLong(resultSet.getColumnIndex('AGE'));const gender = resultSet.getDouble(resultSet.getColumnIndex('GENDER'));console.info(`id=${id}, name=${name}, age=${age}, gender=${gender}`);}// 释放数据集的内存resultSet.close();})}

如果大家还没有掌握鸿蒙,现在想要在最短的时间里吃透它,我这边特意整理了《鸿蒙语法ArkTS、TypeScript、ArkUI等…视频教程》以及《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

鸿蒙语法ArkTS、TypeScript、ArkUI等…视频教程:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

OpenHarmony APP开发教程步骤:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

鸿蒙开发学习手册》:

如何快速入门:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念
2.构建第一个ArkTS应用
3.……

在这里插入图片描述

开发基础知识:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……

在这里插入图片描述

基于ArkTS 开发:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

在这里插入图片描述

鸿蒙生态应用开发白皮书V2.0PDF:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述


http://www.ppmy.cn/ops/18906.html

相关文章

【NTN 卫星通信】NTN应该使用FDD还是TDD双工模式

1 概述 现在主流的商用地面通信系统一般都支持FDD和TDD两种模式,实用于不同的频段。那么卫星通信也需要有这两种模式吗? 2 NTN 双工模式分析 在考虑TDD模式时,需要设置保护时间,以防止终端同时发射和接收。该保护时间直接取决于终…

leetcode热题HOT 152. 乘积最大子数组

一、问题描述: 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 二、问题分析: 考虑到乘…

【iOS】分类,扩展与关联对象

文章目录 前言一、分类实现原理二、分类加载流程三、扩展四、类别与类扩展的区别五、关联对象动态添加取值移除关联对象应用 总结 前言 上一篇章我们探究了类与对象的底层,这一篇我们探究一下分类,扩展与关联对象 一、分类实现原理 首先我们知道扩展是…

java钉钉微信qq扫码登录

概述 第三方接口其实比较简单,按照文档来操作即可,代码也就那点,最费时间的反而是在对接系统的账号的申请上,不建议个人申请很麻烦,还是让公司运维申请企业账号。 作为一名合格的开人人员,不仅仅是把第三…

探索Web3:去中心化的互联网新时代

引言 在过去的几十年里,互联网已经改变了我们的生活方式、商业模式以及社交互动方式。然而,一个新的技术浪潮——Web3正在崭露头角,预示着一个去中心化的互联网新时代的来临。本文将深入探讨Web3技术的定义、特点以及其对未来互联网发展的影…

前端发版缓存问题

前端发版后浏览器缓存问题 浏览器缓存机制是为了提高网页加载速度和减少带宽消耗而设计的。当浏览器访问一个资源时,它会首先检查该资源是否已经在缓存中。如果资源存在且未过期,浏览器会直接从缓存中加载资源,而不会向服务器发送请求。这种…

clickhouse与oracle传输数据

参考 https://github.com/ClickHouse/clickhouse-jdbc-bridge https://github.com/ClickHouse/clickhouse-jdbc-bridge/blob/master/docker/README.md clickhouse官方提供了一种方式,可以实现clickhouse与oracle之间传输数据,不仅仅是oracle&#xff0…

提示工程的艺术:释放ChatGPT的潜力

提示工程的艺术:释放ChatGPT的潜力 理解ChatGPT及其基础知识 ChatGPT是一种基于Transformer的模型,利用机器学习来预测下一个单词并生成文本。提示工程在引导模型的预测方面起着至关重要的作用。通过制作提供清晰和上下文的提示,用户可以利用…