HarmonyOS 鸿蒙Next ArkTS关系型数据库应用遇到的问题
HarmonyOS 鸿蒙Next ArkTS关系型数据库应用遇到的问题 DevEco 3.1.0.100 ArkTS API:8
在做关系型数据库练习时遇到如下问题,先在数据库中插入两行数据,然后查询数据库获取resultSet结果集:
1、resultSet.rowCount反回的数据库行数信息正确,但是resultSet.rowIndex返回值为-1;
2、resultSet结果集提供的转到指定行的方法均不能生效,如:goToRow()、goToFirstRow()、goToNextRow()等;
queryData(callback: Function) {
//查询数据
let result = []
let tmp = {
id: 0, name: '', age: 0, salary: 0
}
let predicates = new data_rdb.RdbPredicates("test");
predicates.isNotNull('name')
let promisequery = this.rdbStoreTmp.query(predicates)
promisequery.then((resultSet) => {
let rowCount = resultSet.rowCount
let rowIdx = resultSet.rowIndex
console.info('1 rowCount:' + rowCount + ', rowIndex:'+ rowIdx)
resultSet.goToFirstRow()
console.info('2 rowCount:' + rowCount + ', rowIndex:'+ rowIdx)
for (let i = 0; i < rowCount; i++) {
tmp.id = resultSet.getLong(resultSet.getColumnIndex("id"))
tmp.name = resultSet.getString(resultSet.getColumnIndex("name"))
tmp.age = resultSet.getLong(resultSet.getColumnIndex("age"))
tmp.salary = resultSet.getDouble(resultSet.getColumnIndex("salary"))
result[i] = tmp;
resultSet.goToNextRow()
console.info('3 rowCount:' + rowCount + ', rowIndex:'+ rowIdx)
}
callback(result)
})
}
调试信息:
11-29 10:23:45.551 20883-21107/com.example.rdb I 03B00/JSApp: app Log: Insert is successful, rowID:1
11-29 10:23:57.451 20883-21107/com.example.rdb I 03B00/JSApp: app Log: Insert is successful, rowID:2
11-29 10:24:02.399 20883-21107/com.example.rdb I 03B00/JSApp: app Log: 1 rowCount:2, rowIndex:-1
11-29 10:24:02.399 20883-21107/com.example.rdb I 03B00/JSApp: app Log: 2 rowCount:2, rowIndex:-1
11-29 10:24:02.400 20883-21107/com.example.rdb I 03B00/JSApp: app Log: 3 rowCount:2, rowIndex:-1
11-29 10:24:02.401 20883-21107/com.example.rdb I 03B00/JSApp: app Log: 3 rowCount:2, rowIndex:-1
最终callback返回的result值,是将第二次Insert的数据赋值给result两次,没有达到遍历数据库的目的。
更多关于HarmonyOS 鸿蒙Next ArkTS关系型数据库应用遇到的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
练习时就参考过和借鉴了这个案例,所以我不清楚我的练习问题出在哪儿。为什么结果集resultSet.rowCount
属性是正确的,而resultSet.rowIndex
却反馈-1(-1应该是个异常值),结果集resultSet
的其它方法都不能正常工作,可能是什么原因到导致这个现象?能否给些提示,
针对HarmonyOS(鸿蒙)Next与ArkTS在关系型数据库应用中遇到的问题,以下是一些可能的解决方案概述,专注于鸿蒙系统及其专属开发框架ArkTS的特性:
-
数据库驱动适配:确保你使用的关系型数据库有适用于鸿蒙系统的驱动。鸿蒙系统可能要求特定的数据库访问接口或库,需检查数据库提供商是否提供了相应的鸿蒙版本驱动。
-
ArkTS框架支持:ArkTS作为鸿蒙系统的声明式UI框架,若需与关系型数据库交互,需确认ArkTS是否提供了相应的数据库访问API或是否有第三方库支持。若无直接支持,可能需要通过JNI(Java Native Interface,但此要求已排除,故考虑其他方式如原生模块封装)或其他跨语言调用机制实现。
-
权限配置:检查应用是否已正确配置访问数据库的权限。鸿蒙系统对应用权限有严格管理,未授权的应用将无法访问敏感资源如数据库。
-
数据同步与线程安全:在ArkTS应用中处理数据库时,注意数据同步与线程安全问题,确保数据库操作在多线程环境下的正确性。
-
错误日志分析:详细查看和分析应用运行时的错误日志,这有助于定位问题所在,可能是SQL语法错误、连接问题或其他运行时异常。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,