HarmonyOS 鸿蒙Next数据查询resultSet.columnNames的列名为空

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

HarmonyOS 鸿蒙Next数据查询resultSet.columnNames的列名为空

public queryMsgType(callBack: (data: Array<string>) => void) {
let msgTypes: Array<string> = new Array<string>()
let sql: StringBuilder = new StringBuilder();
sql.append(" select distinct MESSAGETYPE from “);
sql.append(DBConstants.TABLE_NAME_MESSAGE_LIST);
sql.append(” where IS_DELETE = ‘0’ ");

dbHelper.getDBStore((success, store) => {
if (success) {
store.querySql(sql.toString(), (err: BusinessError, resultSet) => {
if (err) {
YTLog.error(this.TAG, err.message)
} else {

while (resultSet.goToNextRow()) {
YTLog.error(this.TAG, “queryMsgType2==” + resultSet.getColumnName(0))
YTLog.error(this.TAG, “queryMsgType2==” + JSON.stringify(resultSet))
let type = resultSet.getString(resultSet.getColumnIndex(‘MESSAGETYPE’))
msgTypes.push(type)
}
YTLog.error(this.TAG, “queryMsgType2==” + JSON.stringify(msgTypes))

callBack!(msgTypes)
}
})
}
})
}


关于HarmonyOS 鸿蒙Next数据查询resultSet.columnNames的列名为空的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

3 回复

HarmonyOS的隐私保护机制让我在使用时更加安心,不用担心信息泄露。

我试了一下,如果用反引号``包起来的模板字符串作为sql,那么前后不能有任何空格或者换行,否则查询列名就是空,取值有几率报错 Inner Error. Inner Code is 8。 你可以在调用之前使用trim去掉前后空格,或者用单双引号试试。

看你这可能是NEXT 的API的关系数据库接口,接口方法和API 9有些变化,因不确定有些是不是新API特有的,只能粗略给些建议;

1、第一步  dbHelper.getDBStore((success, store) => {  //这里通常返回是 error 和 store,难道新API大改了?

如果API逻辑没变,应当是判断是否有 error,无才调用 store 进行下一步;

2、第二步倒是回到 error, result 的结构了,不过有个可能的小问题不确定会不会影响查询结果;你可试一下;

  之前用过对SQL语句进行字符串拼接,然后创建数据表,但一直报错;查半天,最后发现改回单个字符串即解决,不确定你这里用 StringBuilder 会不会引发类似问题;

这API有时比较娇气,稍微耍点小聪明就不干活,所以还得规规矩矩地找到合适用法,然后再不乱改了:)

回到顶部