HarmonyOS 鸿蒙Next 数据库文件中不存在相关表以及表数据

HarmonyOS 鸿蒙Next 数据库文件中不存在相关表以及表数据

使用关系型数据库,创建数据库文件以及数据表,插入数据,API全部回调成功,调用查询数据的API,查询方法回调成功,但是查询数据行数为空,在模拟器的Device File Browser中找到数据库存放的文件,发现数据库文件中不存在相关表以及表数据,最小化demo:onPageShow(){

//数据表列
let columnFirst = new RdbColumnModel(‘name’, ‘char’, 60);
let columnSecond = new RdbColumnModel(‘age’, ‘integer’,10);
let columnArr = [columnFirst, columnSecond];
const rdbUtil = new RdbUtil(‘student_table’, columnArr,‘rdbDemo.db’);

let valueBucket = {} as relationalStore.ValuesBucket;
valueBucket[‘name’] = ‘张三’;
valueBucket[‘age’] = 18;

let valueBucket2 = {} as relationalStore.ValuesBucket;
valueBucket2[‘name’] = ‘李四’;
valueBucket2[‘age’] = 19;

const valueArr: Array<relationalStore.ValuesBucket> = [valueBucket, valueBucket2];

rdbUtil.getRdbStore().then(() => {
console.info(’--------第一步数据库实例创建成功’);
rdbUtil.createTable().then(() => {
console.info(’--------第二步数据库建表成功’);
rdbUtil.insertData(valueArr).then(number =>{
console.info(’--------第三步数据库数据表插入数据成功’);
//创建谓词,进行查询
let predicates = new relationalStore.RdbPredicates(‘student_table’);
predicates.equalTo(‘name’, ‘张三’);
rdbUtil.queryData(predicates,[‘name’,‘age’]).then((data:relationalStore.ResultSet)=>{
console.info(’--------第四步数据库数据表查询数据成功,开始数据项判断’);
console.info(--------第四步数据库数据表查询数据成功,开始打印数据: ${data.columnNames});
console.info(--------第四步数据库数据表查询数据成功,开始打印数据: ${data.columnCount});

}).catch((err:Error)=>{
console.info(’--------第四步数据库数据表查询数据异常’);
});

}).catch((err:Error)=>{
console.info(’--------第三步数据库数据表插入数据异常’);
});

}).catch((err:Error)=>{
console.info(’--------第二步数据库建表异常’);
});

}).catch((err:Error)=>{
console.info(’--------第一步数据库实例出现异常’);
})
}


更多关于HarmonyOS 鸿蒙Next 数据库文件中不存在相关表以及表数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在rdbUtil.queryData()方法中,您将查询返回的relationalStore.ResultSet关闭了,导致调用的地方获取的relationalStore.ResultSet其实已经不存在了,您可以在外层调用处使用完之后再关闭。

/* 根据谓词查询数据 */ queryData(rdbPredicates: relationalStore.RdbPredicates, columns: Array<string>): Promise<relationalStore.ResultSet> { return new Promise<relationalStore.ResultSet>((success, error) => { if (this.store) { console.info(‘进入根据谓词查询数据’); this.store.query(rdbPredicates, columns).then((dataSet: relationalStore.ResultSet) => { console.info(‘根据谓词查询数据执行成功’); success(dataSet); dataSet.close(); // 此处将结果集ResultSet关闭,导致返回的结果集中无数据 }).catch((err: Error) => { console.info(‘根据谓词查询数据执行失败’); error(err); }); } else if (this.store === undefined) { console.info(‘this.store is undefined’); } else if (this.store === null) { console.info(‘this.store is null’); } }); }

更多关于HarmonyOS 鸿蒙Next 数据库文件中不存在相关表以及表数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next 数据库文件中不存在相关表以及表数据”的问题,以下是专业回答:

在HarmonyOS鸿蒙Next系统中,若数据库文件中不存在相关表或表数据,可能的原因及解决方案如下:

  1. 数据库未正确初始化:检查数据库初始化代码,确保在应用程序启动时正确创建了所需的表。

  2. 表名或数据库名错误:核对代码中引用的表名和数据库名是否与数据库中实际存在的名称一致。注意大小写敏感性和拼写错误。

  3. 数据库文件损坏:尝试重新创建数据库文件或恢复备份数据。

  4. 权限问题:确认应用程序具有访问和操作数据库的权限。

  5. 数据库引擎问题:检查所使用的数据库引擎(如SQLite)是否已正确集成到HarmonyOS应用中,并确保其版本与HarmonyOS兼容。

  6. 数据迁移或同步问题:如果应用涉及数据迁移或同步,检查相关逻辑是否正确执行,确保数据已正确导入目标数据库。

请根据上述可能原因逐一排查并解决问题。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部