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

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

相关推荐

写不来代码的小黑:这么小的城市能有做it的公司也不容易
点赞 评论 收藏
分享
头像
06-26 13:39
美团_测试开发
一起工作了一个多月的外包小哥在上周被优化了,这小哥平时人也挺不错的。我上班这么久也是第一次看见有人被裁,之前组里的人员流动大多是主动离职或者活水(主动申请调去公司的其它部门)。所以外包的缺点之一就是很不稳定,因为裁你的成本比较低,所以觉得你做的不好或者需要优化人的时候首选是外包。那外包这么差还就不能去了吗?外包的好处:&nbsp;&nbsp;没有什么绩效压力,只要你把本职工作做好其实就没啥问题了,一般也不用加班,我接触的外包同学包括哦自己手下的外包同学一般都是8点领个餐补就走了,有时候7点可能就走了,相比正式员工还是挺早的了。&nbsp;&nbsp;门槛低,就拿测试来说的话一般没有什么学历门槛,大专学历一般就够了。还有就是面试问题一般问的也很简单,只要你正常学过一点测试背背八股文啥的大概率能通过外包的面试。&nbsp;&nbsp;薪资待遇:依旧是拿测试举例子,应届生进外包的话一般待遇会有个七八千左右(一线城市),虽然不高但是对比其它行业其实还好了。如果你有个几年经验,进大厂测试外包一般都是过万的,之前听一个学长说过他们组里还有20k的外包,我也是非常惊讶,薪资这个东西比较敏感自己也没有深究过,大概就是这么个情况。外包的坏处:&nbsp;&nbsp;一入外包深似海,据我了解如果你干过外包,那么你后面找工作很难找到中大厂的正式岗了,后面跳槽的公司大概率也是外包公司。&nbsp;&nbsp;人们心中的成见想一座大⛰️,做外包很容易被人歧视,之前刷抖音刷到过外包不许吃零食。大家都是打工当牛马的有什么高低贵贱之分呢,煮波我是从来没有歧视过外包,因为我自己二本在找工作的时候就经常被人歧视。如果你讨厌一种人或者一件事,那么你就不要成为那种人或者做同样的事。最后想说的是,如果你实在真的找不到好的工作,那么是可以去外包的,因为总比没有强(听过一句话:不是你选择了外包,而是外包收留了你)。实习生的话找外包其实影响不大,因为一般公司都不背调实习经历,不会特别关注你的实习公司的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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