HarmonyOS 鸿蒙Next 关系型数据库-请教query问题

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 关系型数据库-请教query问题 下面代码监听点击的逻辑是:查询该昵称有没有注册过,如果有那么就return,不再插入表中!如果没有就正常插入表中!

问题:当日志输出-可以查到匹配的昵称,但是还是会再次插入表中数据,这是为什么

日志:

数据库查询逻辑:

8 回复

因为关系型数据库的查询结果返回是异步的,应该使用异步函数。

截图的代码,结果还没返回,就已经执行判断了。

官方API没有queryall这个函数,应该是自己写的。需要写成异步的,在异步代码块中执行判断和剩下的操作。

建议参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/js-apis-data-relationalstore-0000001493744128-V2#ZH-CN_TOPIC_0000001523648806__query-1

建议使用promise异步。

更多关于HarmonyOS 鸿蒙Next 关系型数据库-请教query问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


是的是的!就是这个原因,谢谢~

问题解决啦,使用async await不好使,必须是promise异步调用~

可以给那个字段加个唯一索引,直接插入。如果插入失败,则表示该记录已存在;如果插入成功,则表示该记录不存在。

但是我也没看见你使用await呀,为啥会不生效呢?我都是用的await,都生效了,

那就来个最简单的if else吧!

这是一个测试段落。

这是另一个段落。

在HarmonyOS鸿蒙Next中,关系型数据库的查询操作主要通过RelationalStore API实现。使用RdbPredicates构建查询条件,通过RdbStore执行查询。以下是一个简单的查询示例:

import relationalStore from '@ohos.data.relationalStore';

let predicates = new relationalStore.RdbPredicates('table_name');
predicates.equalTo('column_name', 'value');

let resultSet = await rdbStore.query(predicates, ['column1', 'column2']);

RdbPredicates用于定义查询条件,如equalTonotEqualTogreaterThan等。query方法执行查询并返回结果集ResultSet,通过ResultSetgoToNextRowgetString等方法遍历和获取数据。

while (resultSet.goToNextRow()) {
    let value = resultSet.getString(resultSet.getColumnIndex('column_name'));
    console.log(value);
}

查询完成后,务必关闭ResultSet以释放资源:

resultSet.close();

以上是鸿蒙Next中关系型数据库的基本查询操作。

在HarmonyOS鸿蒙Next中,关系型数据库使用SQLite作为核心引擎。进行查询操作时,可以通过RdbStore接口的query方法实现。基本步骤如下:

  1. 构建查询条件:使用RdbPredicates对象定义查询的表名和条件。
  2. 执行查询:调用query方法,传入RdbPredicates对象和所需列名。
  3. 处理结果:通过ResultSet对象遍历查询结果。

示例代码:

RdbPredicates predicates = new RdbPredicates("User");
predicates.equalTo("age", 25);
ResultSet resultSet = rdbStore.query(predicates, new String[]{"name", "age"});
while (resultSet.goToNextRow()) {
    String name = resultSet.getString(resultSet.getColumnIndex("name"));
    int age = resultSet.getInt(resultSet.getColumnIndex("age"));
}

确保在使用前已正确初始化RdbStore,并处理可能的异常。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!