找回密码
 立即注册
首页 业界区 业界 在仓颉开发语言中使用数据库

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

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

现在回到数据库页面,这里又写了一个方法:
  1. func getContext(): AbilityContext {
  2.      match(globalAbilityContext) {
  3.          case Some(context) => context
  4.          case _ => throw Exception("can not get globalAbilityContext.")
  5.      }
  6. }
复制代码
现在可以获取数据库了:
  1. var rdbStore: RdbStore = getRdbStore(getStageContext(getContext()), StoreConfig("RdbTest.db", SecurityLevel.S1))
复制代码
获取到数据库,我们可以尝试建表,我们一直在写商城应用,我就创建一个商品表,字段就只写id、商品和价格:
  1. rdbStore.executeSql("CREATE TABLE IF NOT EXISTS GOODSLIST(ID int NOT NULL, NAME varchar(255) NOT NULL, PRICE int,  PRIMARY KEY (Id))")
复制代码
现在尝试向表中插入数据:
  1. var values = HashMap<String, ValueType>()
  2. values.put("ID", ValueType.integer(1))
  3. values.put("NAME", ValueType.string("T恤"))
  4. values.put("PRICE", ValueType.integer(79))
  5. rdbStore.insert("GOODSLIST", values)
复制代码
为了验证插入成功,接下来进行查询操作:
  1. let resultSet = rdbStore.querySql("SELECT * FROM GOODSLIST")
复制代码
查询的写法比较简单,resultSet就是查询得到的结果集,现在为大家演示如何从这个结果集中取出数据:
  1. if(resultSet.goToNextRow()){
  2.   let id = resultSet.getLong(resultSet.getColumnIndex("ID"));
  3.   let name = resultSet.getString(resultSet.getColumnIndex("NAME"));
  4.   let price = resultSet.getLong(resultSet.getColumnIndex("PRICE"));
  5.   AppLog.info('id:' + id.toString()  + ',商品:' + name.toString() + ',价格:' +  price.toString())
  6. }
复制代码
goToNextRow意思是指向结果集的下一行,它返回一个bool值,返回true表示有值。如果你想打印获取的所有数据可以使用while:
  1. while (resultSet.goToNextRow()) {
  2.   let id = resultSet.getLong(resultSet.getColumnIndex("ID"));
  3.   let name = resultSet.getString(resultSet.getColumnIndex("NAME"));
  4.   let price = resultSet.getLong(resultSet.getColumnIndex("PRICE"));
  5.   AppLog.info('id:' + id.toString()  + '  ,商品:' + name.toString() + '  ,价格:' +  price.toString())
  6. }
复制代码
看一下执行结果:
2.png

到这里关于仓颉的数据库基本上就讲完了,因为改和删都可以使用创建数据的方式去操作,比如要删除一条数据:
  1. rdbStore.executeSql("DELETE FROM GOODSLIST WHERE ID = ?", [ValueType.integer(3)])
复制代码
总结一下,如果是有返回值的操作,比如查询,可以使用querySql方法,没有返回值的操作可以使用executeSql方法。
今天的内容就是这样,感谢阅读。##HarmonyOS语言##仓颉##购物#

来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册