当前位置: 首页 > news >正文

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

今天体验了一下在开发者大会上见到的CodeGenie,非常棒。AI正在影响着各行各业,这几天幽蓝君对此深有感触,身为打工人要保持不断学习的状态,不然就有可能被替代。

今天跟大家分享一下在仓颉开发语言中如何使用数据库。

我们这里说的是关系型数据库,首先还是要引入对应的模块,仓颉语言中关系型数据库的模块是:

import ohos.relational_store.*

接下来数据库的操作流程可能很多友友都比较熟悉了,依次是获取数据库、建表,然后进行增删改查等操作,在任何开发语言中都是这样的步骤。不过仓颉的写法可能会有些不同。

仓颉获取数据的方法是:

getRdbStore(context, config)

它的两个参数分别是应用上下文和数据库的配置信息。主要是应用上下文写起来比较麻烦,首先main_ability.cj文件,定义全局的上下文参数,并且赋值:

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

这两行代码的位置是这样的:

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

func getContext(): AbilityContext {match(globalAbilityContext) {case Some(context) => contextcase _ => 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())
}

看一下执行结果:

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

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

总结一下,如果是有返回值的操作,比如查询,可以使用querySql方法,没有返回值的操作可以使用executeSql方法。

今天的内容就是这样,感谢阅读。##HarmonyOS语言##仓颉##购物#

http://www.lqws.cn/news/502435.html

相关文章:

  • TCP/UDP协议深度解析(一):UDP特性与TCP确认应答以及重传机制
  • 计算机网络第九章——数据链路层《介质访问控制》
  • C++(面向对象编程——多态)
  • 曼昆《经济学原理》第九版 宏观经济学 第二十六章货币增长与通货膨胀
  • python中学物理实验模拟:摩檫力
  • BI财务分析 – 反映盈利水平利润占比的指标如何分析(下)
  • iwebsec靶场sqli注入(2)
  • [Linux] Linux用户和组管理
  • GoAdmin代码生成器实践
  • 大模型项目实战:业务场景和解决方案
  • TongWeb替换tomcat
  • Linux Sonic Agent 端部署(详细版)(腾讯云)
  • MySQL:深入总结锁机制
  • 系统架构设计的全方位视角:深入解析4+1视图模型及其应用实践
  • prometheus+grafana+MySQL监控
  • 飞算 JavaAI 插件炸场!一小时搭图书管理系统
  • 从拥塞控制算法热交换到内核错误修复
  • Golang Kratos 系列:业务分层的若干思考(一)
  • 从用户到社区Committer:小米工程师隋亮亮的Apache Fory成长之路
  • WPF/Net Core 简单显示PDF
  • Windows WSL安装Emscripten‌/emsdk(失败)
  • Netty内存池核心PoolArena源码解析
  • OSS监控体系搭建:Prometheus+Grafana实时监控流量、错误码、存储量(开源方案替代云监控自定义视图)
  • RAG大模型开发初探 || 动手大模型应用开发
  • 医疗AI数智立体化体系V2.0泛化多模块编程操作手册--架构师版(下)
  • 第一篇Anaconda/Pytorch/Opencv/Yolov5环境搭建
  • 本地部署搜索引擎 Elasticearch 并实现外网访问(Windows 版本)
  • 6.24_JAVA_微服务day07_RabbitMQ高级
  • 基于C#实现(WinForm)P2P聊天小程序
  • NLP基础1_word-embedding