HarmonyOS 鸿蒙Next 关系型数据库-请教query问题
HarmonyOS 鸿蒙Next 关系型数据库-请教query问题 下面代码监听点击的逻辑是:查询该昵称有没有注册过,如果有那么就return,不再插入表中!如果没有就正常插入表中!
问题:当日志输出-可以查到匹配的昵称,但是还是会再次插入表中数据,这是为什么
日志:
数据库查询逻辑:
因为关系型数据库的查询结果返回是异步的,应该使用异步函数。
截图的代码,结果还没返回,就已经执行判断了。
官方API没有queryall
这个函数,应该是自己写的。需要写成异步的,在异步代码块中执行判断和剩下的操作。
建议使用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
用于定义查询条件,如equalTo
、notEqualTo
、greaterThan
等。query
方法执行查询并返回结果集ResultSet
,通过ResultSet
的goToNextRow
和getString
等方法遍历和获取数据。
while (resultSet.goToNextRow()) {
let value = resultSet.getString(resultSet.getColumnIndex('column_name'));
console.log(value);
}
查询完成后,务必关闭ResultSet
以释放资源:
resultSet.close();
以上是鸿蒙Next中关系型数据库的基本查询操作。
在HarmonyOS鸿蒙Next中,关系型数据库使用SQLite作为核心引擎。进行查询操作时,可以通过RdbStore
接口的query
方法实现。基本步骤如下:
- 构建查询条件:使用
RdbPredicates
对象定义查询的表名和条件。 - 执行查询:调用
query
方法,传入RdbPredicates
对象和所需列名。 - 处理结果:通过
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
,并处理可能的异常。