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

今天体验了一下在开发者大会上见到的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)

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

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

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意思是指向结果集的下一行,如果你想获取所有的数据可以使用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语言##仓颉##购物#

#harmonyos#
全部评论

相关推荐

头像 会员标识
06-07 16:24
门头沟学院 Java
bg:&nbsp;&nbsp;&nbsp;&nbsp;26届学院本,一段实习经历,从0-1开发了Web+移动端的二手闲置商城,目前离职,算法有点差,基础扎实5月20日离职的,期间自己沉淀和回顾了项目,并且复盘和更改了项目的遗存问题,然后24号开始到昨天,每天20+沟通ssob,然后面了5家,3家小厂oc,但是工资很低,说是实习生固定薪资,然后一家陌陌笔试(大概率挂了,算法不行,网络波动大,图书馆人来人往有点吵,下次去空教室),现在学校的课程下一周就上完了,目前自己的想法有三种,想让牛友们给点建议:&nbsp;&nbsp;&nbsp;&nbsp;1.继续投简历,然后约面试,在期间复盘项目+八股+算法(可能时间不太够,算法算是一个难点,工作期间都没怎么刷。忘了好多)&nbsp;&nbsp;&nbsp;&nbsp;2.沉淀到8-9月份,期间专心复盘项目+八股+算法,计网和基础都打牢&nbsp;&nbsp;&nbsp;&nbsp;3.9月份新生开学,去发传单和贴告示牌以及小卡片推销自己的二手闲置商城,暑假期间维护项目和测试,然后复习八股+项目+算法,但是项目的开发占大头(因为后台端部分没做完......)(ps:有个朋友有意向一起弄,但是感觉他更偏向于找实习,后面可能还是自己弄)项目的情况是:&nbsp;&nbsp;&nbsp;&nbsp;目前项目只是Web端和移动端,可能便携性不是很高,因为有营业执照,可以考虑往小程序部分扩展,目前商城的重构都算比较OK的,基础的购买支付,显示都没什么问题,自己也使用ngrok开发给舍友体验了,体验都很流畅(附上小部分UI图)基础的实现都是没什么问题,第一版因为对接的是第三方的聚合平台,每单都抽我百分之1.2,根本受不了,直接关了重构项目,现在想听听各位牛友的建议
投递挚文集团等公司8个岗位 简历中的项目经历要怎么写 牛油的搬砖plog
点赞 评论 收藏
分享
是每个人事都这样与找工作的人这样沟通吗?正常询问不可以吗
据说名字越长别人越关注你的昵称我觉得我要被关注了:excal 我还真不会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务