HarmonyOS 数据持久化 关系型数据库之 查询逻辑编写

前面两篇文章 HarmonyOS 数据持久化 关系型数据库之 初始化操作 和 HarmonyOS 数据持久化 关系型数据库之 增删改逻辑编写 我们已经编写了 初始化 和 增删改 操作的基本逻辑 最后 收尾一下查询的函数

我们还是打开编辑器 然后 打开项目
找到 我们正在写的这个 relationalClass 类
在这里插入图片描述
我们在下面再加一个函数 叫 getTaskList
一个驼峰命名法

第一步 肯定是构建条件 之前我们删和改也有讲过 这里仔细说一下
首先

let predicates = new relationalStore.RdbPredicates("TASK")

RdbPredicates 中 传入表名
然后 你直接用这个 new 出来的对象
predicates 后面 打个点 就会弹出它所有能操作的条件了

predicates.

在这里插入图片描述
因为这里 我们打算查整表 就不传条件了

但是 这里 我们还需要对查询结果做解析 那么 我们需要定义一个类 来记录我们表的数据结构类型
就像java 你要做数据库操作 要有一个属性类 harmonyos这个地方也是一样的

我们在自己这个 utils 包下创建一个 ets文件
在这里插入图片描述
就叫 Task 吧 与表同名 看着规范一点
编写代码如下

@Observed
export default class TaskInfo{id: numbername:stringfinished: booleanconstructor(id:number, name:string, finished:boolean){this.id = id;this.name = name;this.finished = finished;}
}

这里 代码也很简单
之所以 要用 ets文件 是因为 只有ets 才能用 @Observed 注解
这个 注解 我之前的文章也有讲过 HarmonyOS 状态管理装饰器 Observed与ObjectLink 处理嵌套对象/对象数组 结构双向绑定
然后 定义了和我们数据库表相对应的三个字段
最后在constructor构造函数中 接收三个值 给我们的类中的三个值赋值

然后 我们在 relationalClass 中导入 Task

import TaskInfo from "./Task";

在这里插入图片描述
然后 抱歉 我犯了个很致命的错误
报错
Importing ArkTS files to JS and TS files is not allowed.
意思是 ts文件中是不能引入 ets文件的

我们右键relationalClass.ts 如下图选择
在这里插入图片描述
将后缀改为ets即可
在这里插入图片描述
这样 就OK啦
在这里插入图片描述
然后 我们直接编写getTaskList代码如下

//查询 Task 表数据
async getTaskList() {// 创建predicates 传入表名let predicates = new relationalStore.RdbPredicates("TASK")/*通过 rdbStore对象 执行 query查询函数第一个参数 条件对象 第二个参数 字符串数组 说明要查询的字段定义 result 接收查询结果*/let result = await this.rdbStore.query(predicates,["ID", "NAME", "FINISHED"])//定义一个 TaskInfo 类型的数组 叫 TaskList 用于接收结果let TaskList:TaskInfo[] = [];//对result进行遍历  while循环 条件 isAtLastRow当前是否在最后一行 如果不是 则 一直往下走while(!result.isAtLastRow) {//调用 goToNextRow 进入下一行result.goToNextRow()//定义id 字段 等于 result.getLong getLong意思是获取数字类型 getColumnIndex 指定字段IDlet id = result.getLong(result.getColumnIndex('ID'))//定义name 等于 result.getString 字符串类型要用getString getColumnIndex指定读取字段NAMElet name = result.getString(result.getColumnIndex('NAME'))//定义 finished 等于result.getLong 因为 boolean类型存入数据库  就是数字类型 0/1 我们getColumnIndex自定FINISHEDlet finished = result.getLong(result.getColumnIndex('FINISHED'))//然后 直接将结果push 到TaskList里面//注意这里finished是数字类型的  0/1  但我们类中是boolean 类型 所以要转一下TaskList.push({id,name,finished: (finished == 1?true:false)})}//最后 将处理好的TaskList返回回去return TaskList
}

我自认为自己的注释已经写的很用心了

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

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

相关文章

力扣---简化路径

给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 / 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外…

白皮书发布|超融合运行 K8s 的场景、功能与优势

目前,不少企业都使用虚拟化/超融合运行 Kubernetes 和容器化应用。一些用户可能会有疑惑:既然 Kubernetes 可以部署在裸金属上,使用虚拟化不是“多此一举”吗? 在电子书《IT 基础架构团队的 Kubernetes 管理:从入门到…

【STA】SRAM / DDR SDRAM 接口时序约束学习记录

1. SRAM接口 相比于DDR SDRAM,SRAM接口数据与控制信号共享同一时钟。在用户逻辑(这里记作DUA(Design Under Analysis))将数据写到SRAM中去的写周期中,数据和地址从DUA传送到SRAM中,并都在有效时…

NoSQL--3.MongoDB配置(Linux版)

目录 2.2 Linux环境下操作 2.2.1 传输MongoDB压缩包到虚拟机: 2.2.2 启动MongoDB服务: 2.2 Linux环境下操作 2.2.1 传输MongoDB压缩包到虚拟机: (笔者使用XShell传输) 如果不想放在如图的路径,删除操作…

嵌入式系统

一、基本概念 嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗方面的严格要求。从计算机角度看,嵌入式系统是指嵌入各种设备及应用产品…

MongoDB开启事务

MongoDB开启事务 配置单节点。到路径C:\Program Files\MongoDB\Server\4.0\bin 使用记事本以管理员权限打开文件mongod.cfg添加如下配置: replication:replSetName: rs02. 重启MongoDB服务 3. 重启后执行命令 rs.initiate()

【嵌入式——QT】MDI应用程序设计

MDI应用程序就是在主窗口里创建多个同类型的MDI子窗口,这些MDI子窗口在主窗口里显示,并享受主窗口上的工具栏和菜单等操作功能,主窗口上的操作都针对当前活动的MDI子窗口进行。 图示 代码示例 QWMainWindow.h #ifndef QWMAINWINDOW_H …

大语言模型在科技研发与创新中的角色在快速变化

在技术研发与创新中,比如在软件开发、编程工具、科技论文撰写等方面,大语言模型可以辅助工程师和技术专家进行快速的知识检索、代码生成、技术文档编写等工作。在当今的软件工程和研发领域,尤其是随着大语言模型技术的快速发展,它…

【Web】浅聊Java反序列化之Rome——EqualsBeanObjectBean

目录 简介 原理分析 ToStringBean EqualsBean ObjectBean EXP ①EqualsBean直球纯享版 ②EqualsBean配合ObjectBean优化版 ③纯ObjectBean实现版 关于《浅聊Java反序列化》系列,纯是记录自己的学习历程,宥于本人水平有限,内容很水&a…

JWT令牌技术

文章目录 什么是令牌技术为什么需要令牌技术呢JWT 令牌JWT 组成JWT 令牌的使用1. 引入 JWT 依赖生成 JWT 令牌解析 JWT 令牌 什么是令牌技术 令牌技术是一种重要的安全技术,它在多个领域中发挥着关键作用。简单来说,令牌(Token)可…

大数据冷热分离方案

数据冷热分离方案 1、背景 ​ 随着业务的发展,在线表中的数据会逐渐增加。常规业务都有冷热数据现象明显的特性(需要访问的都是近期产生的热数据;时间久远的冷数据出于备份、备案溯源等诉求会进行在线保留)。在业务表数据 量可控…

深入理解Java的Writer类

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好…

LeetCode刷题日志-17.电话号码的字母组合

纯暴力解法&#xff0c;digits有多长&#xff0c;就循环多少次进行字母组合 class Solution {public List<String> letterCombinations(String digits) {List<String> reslut new ArrayList<>();if(digits.equals(""))return reslut;Map<Inte…

Android Studio 检测不到 IDE 更新

点击 Configure updates...&#xff0c;不知道什么时候把 Check for IDE updates 去勾了&#xff0c;一年没有检测到更新&#xff01; 只能重新安装&#xff0c;掉坑里了&#xff01;

云上攻防-云产品篇堡垒机场景JumpServer绿盟SASTeleport麒麟齐治

知识点 1、云产品-堡垒机-产品介绍&攻击事件 2、云产品-堡垒机-安全漏洞&影响产品 章节点&#xff1a; 云场景攻防&#xff1a;公有云&#xff0c;私有云&#xff0c;混合云&#xff0c;虚拟化集群&#xff0c;云桌面等 云厂商攻防&#xff1a;阿里云&#xff0c;腾讯…

linuxOPS基础_linux系统注意事项

Linux严格区分大小写 Linux 和Windows不同&#xff0c;Linux严格区分大小写的&#xff0c;包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如&#xff0c;Win7 系统桌面上有文件夹叫做Test&#xff0c;当我们在桌面上再新建一个名为 test 的文件夹时&#xff0c…

Xilinx 7系列FPGA配置(ug470)

Xilinx 7系列FPGA配置&#xff08;ug470&#xff09; 配置模式串行配置模式接口从-连接方式主-连接方式串行菊花链&#xff08;非同时配置&#xff09;串行配置&#xff08;同时配置&#xff09;时序 主SPI配置模式SPIx1/x2 连接图SPIx1模式时序SPIx4 连接图SPI操作指令操作fla…

深入解读 Elasticsearch 磁盘水位设置

本文将带你通过查看 Elasticsearch 源码来了解磁盘使用阈值在达到每个阶段的处理情况。 跳转文章末尾获取答案 环境 本文使用 Macos 系统测试&#xff0c;512M 的磁盘&#xff0c;目前剩余空间还有 60G 左右&#xff0c;所以按照 Elasticsearch 的设定&#xff0c;ES 中分片应…

什么是ElasticSearch的深度分页问题?如何解决?

在ElasticSearch中进行分页查询通常使用from和size参数。当我们对ElasticSearch发起一个带有分页参数的查询(如使用from和size参数)时,ElasticSearch需要遍历所以匹配的文档直到达到指定的起始点(from),然后返回从这一点开始的size个文档 在这个例子中: 1.from 参数定义…

ABAP接口-RFC连接(ABAP TO ABAP)

目录 ABAP接口-RFC连接&#xff08;ABAP TO ABAP&#xff09;创建ABAP连接RFC函数的调用 ABAP接口-RFC连接&#xff08;ABAP TO ABAP&#xff09; 创建ABAP连接 事务代码&#xff1a;SM59 点击创建&#xff0c;填写目标名称&#xff0c;选择连接类型&#xff1a; 填写主机名…