在仓颉开发语言中使用数据库

简介: 本文介绍了在仓颉开发语言中操作关系型数据库的流程,包括获取数据库、建表、增删改查等操作,并提供了详细的代码示例,帮助开发者快速掌握HarmonyOS下数据库的应用。

今天体验了一下在开发者大会上见到的CodeGenie,非常棒。AI正在影响着各行各业,这几天幽蓝君对此深有感触,身为打工人要保持不断学习的状态,不然就有可能被替代。
今天跟大家分享一下在仓颉开发语言中如何使用数据库。
我们这里说的是关系型数据库,首先还是要引入对应的模块,仓颉语言中关系型数据库的模块是:
import ohos.relational_store.*
接下来数据库的操作流程可能很多友友都比较熟悉了,依次是获取数据库、建表,然后进行增删改查等操作,在任何开发语言中都是这样的步骤。不过仓颉的写法可能会有些不同。
仓颉获取数据的方法是
getRdbStore(context, config)
它的两个参数分别是应用上下文和数据库的配置信息。主要是应用上下文写起来比较麻烦,首先main_ability.cj文件,定义全局的上下文参数,并且赋值:

var globalAbilityContext: Option<AbilityContext> = Option<AbilityContext>.None

globalAbilityContext = Option<AbilityContext>.Some(this.context)

这两行代码的位置是这样的:
image.png

现在回到数据库页面,这里又写了一个方法:

func getContext(): AbilityContext {
     match(globalAbilityContext) {
         case Some(context) => context
         case _ => throw Exception("can not get globalAbilityContext.")
     }
 }

现在可以获取数据库了:

var rdbStore: RdbStore = getRdbStore(getStageContext(getContext()), StoreConfig("RdbTest.db", SecurityLevel.S1))

获取到数据库,我们可以尝试建表,我们一直在写商城应用,我就创建一个商品表,字段就只写id、商品和价格:

rdbStore.executeSql("CREATE TABLE IF NOT EXISTS GOODSLIST(ID int NOT NULL, NAME varchar(255) NOT NULL, PRICE int,  PRIMARY KEY (Id))")

现在尝试向表中插入数据:

var values = HashMap<String, ValueType>()
values.put("ID", ValueType.integer(1))
values.put("NAME", ValueType.string("T恤"))
values.put("PRICE", ValueType.integer(79))

rdbStore.insert("GOODSLIST", values)
为了验证插入成功,接下来进行查询操作:
let resultSet = rdbStore.querySql("SELECT * FROM GOODSLIST")

查询的写法比较简单,resultSet就是查询得到的结果集,现在为大家演示如何从这个结果集中取出数据:

if(resultSet.goToNextRow()){
  let id = resultSet.getLong(resultSet.getColumnIndex("ID"));
  let name = resultSet.getString(resultSet.getColumnIndex("NAME"));
  let price = resultSet.getLong(resultSet.getColumnIndex("PRICE"));
  AppLog.info('id:' + id.toString()  + ',商品:' + name.toString() + ',价格:' +  price.toString())
}

goToNextRow意思是指向结果集的下一行,它返回一个bool值,返回true表示有值。如果你想获取打印的数据可以使用while:

while (resultSet.goToNextRow()) {
  let id = resultSet.getLong(resultSet.getColumnIndex("ID"));
  let name = resultSet.getString(resultSet.getColumnIndex("NAME"));
  let price = resultSet.getLong(resultSet.getColumnIndex("PRICE"));
  AppLog.info('id:' + id.toString()  + '  ,商品:' + name.toString() + '  ,价格:' +  price.toString())
}

看一下执行结果:
image.png

到这里关于仓颉的数据库基本上就讲完了,因为改和删都可以使用创建数据的方式去操作,比如要删除一条数据:

rdbStore.executeSql("DELETE FROM GOODSLIST WHERE ID = ?", [ValueType.integer(3)])

总结一下,如果是有返回值的操作,比如查询,可以使用querySql方法,没有返回值的操作可以使用executeSql方法。
今天的内容就是这样,感谢阅读。##HarmonyOS语言##仓颉##购物#

相关文章
|
开发者
鸿蒙仓颉语言开发教程:网络请求和数据解析
本文介绍了在仓颉开发语言中实现网络请求的方法,以购物应用的分类列表为例,详细讲解了从权限配置、发起请求到数据解析的全过程。通过示例代码,帮助开发者快速掌握如何在网络请求中处理数据并展示到页面上,减少开发中的摸索成本。
鸿蒙仓颉语言开发教程:网络请求和数据解析
|
安全 开发工具 开发者
仓颉编程语言(Cangjie)正式发布1.0.0 LTS版本,附安装配置教程
仓颉编程语言首个长期支持版本于2025年7月1日发布,定位为面向全场景应用开发的下一代语言。其特点包括多后端支持、简明语法、多范式编程、类型与内存安全、高效并发及丰富内置库。支持与C语言互操作,并提供元编程能力,助力UI开发。当前仅提供CJNative后端SDK,配套VS Code插件便于开发。安装包已规范命名,可在官网下载并按指导完成配置。
2083 1
仓颉编程语言(Cangjie)正式发布1.0.0 LTS版本,附安装配置教程
|
IDE 开发工具 开发者
仓颉开发语言入门教程:搭建开发环境
仓颉开发语言是华为为鸿蒙系统自主研发的编程语言,肩负重要使命。本文介绍如何从零搭建仓颉开发环境,重点演示在DevEco Studio中安装插件、配置项目及运行Hello World示例,助力开发者快速上手。
|
机器学习/深度学习 敏捷开发 人工智能
2025产品需求管理最佳实践:从流程优化到工具选型 详解项目需求管理实战
本文深入探讨产品需求管理的核心概念与全流程优化方法,涵盖需求采集、分析、优先级排序及落地实现等关键环节。通过多维度需求采集、科学评估与敏捷迭代,结合团队角色分工,确保需求价值最大化。同时对比评测板栗看板、Jira、Axosoft等管理工具,并展望AI赋能下的智能生成、预测性分析与自动化流程新趋势,助力企业精准把握市场动态,打造爆款产品。掌握需求管理精髓,是产品成功的关键驱动力。
|
机器学习/深度学习 人工智能 测试技术
MoBA:LLM长文本救星!月之暗面开源新一代注意力机制:处理1000万token能快16倍,已在Kimi上进行验证
MoBA 是一种新型注意力机制,通过块稀疏注意力和无参数门控机制,显著提升大型语言模型在长上下文任务中的效率。
1021 3
|
SQL PyTorch 算法框架/工具
Intel技术专家:oneAPI 开放式加速计算|龙蜥大讲堂第114期
这次分享的主题是《oneAPI 开放式加速计算 龙蜥大讲堂第 114 期》的主要内容。主要分为四个部分: 1. 发展背景 2. 什么是 oneAPI 3. 产品应用 4. 总结展望
1272 6
|
编解码 数据可视化 定位技术
60行代码就可以训练/微调 Segment Anything 2 (SAM 2)
本文演示了如何在仅60行代码内(不包括标注和导入)对SAM2进行微调。
1813 1
60行代码就可以训练/微调 Segment Anything 2 (SAM 2)
|
网络协议 大数据 网络架构
【TCP】确认应答、超时重传机制和TCP报头
【TCP】确认应答、超时重传机制和TCP报头
548 3
|
数据挖掘 数据处理 Python
【Python DataFrame 专栏】Python DataFrame 入门指南:从零开始构建数据表格
【5月更文挑战第19天】本文介绍了Python数据分析中的核心概念——DataFrame,通过导入`pandas`库创建并操作DataFrame。示例展示了如何构建数据字典并转换为DataFrame,以及进行数据选择、添加修改列、计算统计量、筛选和排序等操作。DataFrame适用于处理各种规模的表格数据,是数据分析的得力工具。掌握其基础和应用是数据分析之旅的重要起点。
608 2
【Python DataFrame 专栏】Python DataFrame 入门指南:从零开始构建数据表格
|
移动开发 JavaScript 前端开发
"Vue开发者必看:一篇文章教你如何实现px自动转换vw或rem,轻松应对H5页面响应式设计挑战!"
【10月更文挑战第23天】在Vue项目中实现px到vw或rem的自动转换,可以使用PostCSS插件。首先安装`postcss-loader`,然后添加`postcss-px-to-viewport`和`postcss-pxtorem`插件,并在`postcss.config.js`中配置。配置完成后,直接在Vue组件中使用px单位编写样式,PostCSS会自动转换为vw或rem。这样可以简化开发流程,提高代码的可维护性和页面的响应式设计能力。
1495 0