HarmonyOS 鸿蒙Next Rdb数据库存储,请问以下代码无报错,为什么不论调用几次,最终查询时结果都为空对象{}
HarmonyOS 鸿蒙Next Rdb数据库存储,请问以下代码无报错,为什么不论调用几次,最终查询时结果都为空对象{}
const STORE_CONFIG: relationalStore.StoreConfig =
{ name: "RdbZhongJi.db", securityLevel: relationalStore.SecurityLevel.S1 };
const SQL_CREATE_TABLE =
'CREATE TABLE IF NOT EXISTS WIKI (ID INTEGER PRIMARY KEY AUTOINCREMENT, localityData TEXT, localityDataTitle TEXT)';
relationalStore.getRdbStore(getContext(this), STORE_CONFIG, async (err, store) => {
if (err) {
console.error(`请求数据库错误. Code:${err.code}, message:${err.message}`);
return;
}
// 当数据库创建时,数据库默认版本为0
if (store.version === 0) {
store.executeSql(SQL_CREATE_TABLE); // 创建数据表
// 设置数据库的版本,入参为大于0的整数
store.version = 3;
} // 如果数据库版本不为0且和当前数据库版本不匹配,需要进行升降级操作
// 当数据库存在并假定版本为1时,例应用从某一版本升级到当前版本,数据库需要从1版本升级到2版本
if (store.version === 1) {
// version = 1:表结构:WIKI (localityData, SALARY, CODES, ADDRESS) => version = 2:表结构:WIKI (localityData, localityDataTitle)
if (store !== undefined) {
(store as relationalStore.RdbStore).executeSql('ALTER TABLE WIKI ADD COLUMN AGE INTEGER');
store.version = 2;
}
}
// 当数据库存在并假定版本为2时,例应用从某一版本升级到当前版本,数据库需要从2版本升级到3版本
if (store.version === 2) {
// version = 2:表结构:WIKI (localityData, localityDataTitle) => version = 3:表结构:WIKI (localityData, localityDataTitle)
if (store !== undefined) {
(store as relationalStore.RdbStore).executeSql('ALTER TABLE WIKI DROP COLUMN ADDRESS TEXT');
store.version = 3;
}
}
store.insert("WIKI",
{ "localityData": "JSON.stringify(this.data)", "localityDataTitle": "JSON.stringify(this.dataTypeTitle)", },
(err: BusinessError, rowId: number) => {
if (err) {
console.error(`请求数据库错误${err.code}, message:${err.message}`);
return;
}
console.info(`请求数据库rowId:${rowId}`);
store.query(new relationalStore.RdbPredicates("WIKI").notEqualTo("localityData", null), (err, resultSet) => {
if (err) {
console.info(`请求数据库错误:${err.code}, message:${err.message}`);
return;
}
console.info(`请求数据库`, JSON.stringify(resultSet));
})
});
});
更多关于HarmonyOS 鸿蒙Next Rdb数据库存储,请问以下代码无报错,为什么不论调用几次,最终查询时结果都为空对象{}的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
.notEqualTo("localityData", null)
数据类型是string。null无法匹配建议换成
.notEqualTo("localityData", '')
结果集resultSet需要进行遍历 。无法直接转json。进行输出查看。
参考demo:
import { relationalStore } from '@kit.ArkData';
import { BusinessError } from ‘@kit.BasicServicesKit’;
struct Index {
@State message: string = ‘Hello World’;
build() {
RelativeContainer() {
Text(this.message)
.id(‘HelloWorld’)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: ‘container’, align: VerticalAlign.Center },
middle: { anchor: ‘container’, align: HorizontalAlign.Center }
})
.onClick(()=>{
const STORE_CONFIG: relationalStore.StoreConfig = {
name: “RdbZhongJi.db”,
securityLevel: relationalStore.SecurityLevel.S1
};
const SQL_CREATE_TABLE = ‘CREATE TABLE IF NOT EXISTS WIKI (ID INTEGER PRIMARY KEY AUTOINCREMENT, localityData TEXT, localityDataTitle TEXT)’;
relationalStore.getRdbStore(getContext(this), STORE_CONFIG, async (err, store) => {
if (err) {
console.error(请求数据库错误. Code:${err.code}, message:${err.message}
);
return;
}
// 当数据库创建时,数据库默认版本为0
if (store.version === 0) {
store.executeSql(SQL_CREATE_TABLE); // 创建数据表
// 设置数据库的版本,入参为大于0的整数
store.version = 3;
}
// 如果数据库版本不为0且和当前数据库版本不匹配,需要进行升降级操作
// 当数据库存在并假定版本为1时,例应用从某一版本升级到当前版本,数据库需要从1版本升级到2版本
if (store.version === 1) {
// version = 1:表结构:WIKI (localityData, SALARY, CODES, ADDRESS) => version = 2:表结构:WIKI (localityData, localityDataTitle)
if (store !== undefined) {
(store as relationalStore.RdbStore).executeSql(‘ALTER TABLE WIKI ADD COLUMN AGE INTEGER’);
store.version = 2;
}
}
// 当数据库存在并假定版本为2时,例应用从某一版本升级到当前版本,数据库需要从2版本升级到3版本
if (store.version === 2) {
// version = 2:表结构:WIKI (localityData, localityDataTitle) => version = 3:表结构:WIKI (localityData, localityDataTitle)
if (store !== undefined) {
(store as relationalStore.RdbStore).executeSql(‘ALTER TABLE WIKI DROP COLUMN ADDRESS TEXT’);
store.version = 3;
}
}
store.insert(“WIKI”, {
“localityData”: “JSON.stringify(this.data)”,
“localityDataTitle”: “JSON.stringify(this.dataTypeTitle)”,
}, (err: BusinessError, rowId: number) => {
if (err) {
console.error(请求数据库错误${err.code}, message:${err.message}
);
return;
}
console.info(请求数据库rowId:${rowId}
);
store.query(new relationalStore.RdbPredicates(“WIKI”).notEqualTo(“localityData”, ‘’), (err, resultSet) => {
if (err) {
console.info(请求数据库错误:${err.code}, message:${err.message}
);
return;
}
console.info(ResultSet column names: ${resultSet.columnNames}, column count: ${resultSet.columnCount}
);
console.info(‘resultSet.goToNextRow()’)
while (resultSet.goToNextRow()) {
const localityData = resultSet.getString(resultSet.getColumnIndex(‘localityData’));
const localityDataTitle = resultSet.getString(resultSet.getColumnIndex(‘localityDataTitle’));
console.info(id=${localityData}, name=${localityDataTitle}
);
}
// 释放数据集的内存
console.info(请求数据库
, JSON.stringify(resultSet));
resultSet.close();
})
}
);
});
})
}
.height(‘100%’)
.width(‘100%’)
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
更多关于HarmonyOS 鸿蒙Next Rdb数据库存储,请问以下代码无报错,为什么不论调用几次,最终查询时结果都为空对象{}的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS 鸿蒙Next Rdb数据库存储问题中,若代码无报错但查询结果为空对象{}
,可能原因如下:
-
数据未成功插入:检查插入数据逻辑,确认数据是否已正确写入数据库。可能由于事务未提交、插入语句有误或数据被覆盖导致。
-
查询条件不匹配:验证查询条件是否正确,确保查询条件与插入的数据一致。若查询条件有误,将无法匹配到已存在的数据。
-
数据库连接问题:确认数据库连接是否稳定,且每次操作都使用了有效的数据库连接。连接不稳定或未正确建立可能导致查询操作失败。
-
数据同步问题:在多线程或分布式环境中,可能存在数据同步问题。检查是否有其他线程或进程在查询前修改了数据。
-
数据库配置:检查数据库配置,如数据库文件路径、权限设置等,确保数据库能正常访问和操作。
-
版本兼容性:确认使用的鸿蒙Next Rdb数据库版本与代码兼容,避免因版本差异导致的问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html