HarmonyOS 鸿蒙Next 如何将.db文件打开获得一个database对象
HarmonyOS 鸿蒙Next 如何将.db文件打开获得一个database对象
我有一个db数据库文件,现在将它放到rawfile内,我引入了ohos/dataorm(V2.2.2)库,但在库中没有找到将db文件打开的相关方法
数据库,请参考https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-relationalstore-0000001493744128-V5
参考代码:
将rawfile目录下db文件拷贝至数据库存储沙箱路径
saveFileToCache(file:resourceManager.RawFileDescriptor, dbName:string) {
// 创建缓存文件(当前是覆盖式创建)
let cFile = getContext(this).getApplicationContext().databaseDir + "/entry/rdb/" + dbName
let cacheFile = fs.openSync(cFile, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
// 读取缓冲区大小
let bufferSize = 30000
let buffer = new ArrayBuffer(bufferSize); //创建buffer缓冲区
// 要copy的文件的offset和length
let currentOffset = file.offset;
let lengthNeedToReed = file.length;
let readOption:ReadOptions = {
offset: currentOffset, //期望读取文件的位置。可选,默认从当前位置开始读
length: bufferSize //每次期望读取数据的长度。可选,默认缓冲区长度
}
// 后面len会一直减,直到没有
while(true) {
// 读取buffer容量的内容
let readLength = fs.readSync(file.fd, buffer, readOption);
// 写入buffer容量的内容
fs.writeSync(cacheFile.fd, buffer, {length:readLength}) //写到cacheFile里
// 判断后续内容 修改读文件的参数
// buffer没读满代表文件读完了
if (readLength < bufferSize) {
break;
}
if (readOption.offset != undefined){
readOption.offset += readLength;
}
}
console.log(“Copy Success!!!”)
fs.close(cacheFile);
}
INIT() {
// 创建数据库沙箱目录
try {
let dirPath = getContext(this).getApplicationContext().databaseDir + “/entry”
fs.mkdirSync(dirPath);
dirPath = dirPath + “/rdb”
fs.mkdirSync(dirPath);
}catch (error) {
console.error(mkdir rdbPath failed, error code: ${error.code}, message: ${error.message}.
)
};
//数据库名称
let dbName:string = ‘Company.db’
//读取rawfile目录下db文件
try {
getContext(this).resourceManager.getRawFd(‘rdb/’ + dbName, (error, value) => {
if (error != null) {
console.log(callback getRawFd failed error code: ${error.code}, message: ${error.message}.
);
} else {
console.info(value.length.toString())
this.saveFileToCache(value, dbName)
}
});
} catch (error) {
console.error(callback getRawFd failed, error code: ${error.code}, message: ${error.message}.
)
};
}
参考fs文件管理:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fs-V5
场景一代码开发步骤:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/data-persistence-by-rdb-store-0000001505752421-V5#section11675721527
更多关于HarmonyOS 鸿蒙Next 如何将.db文件打开获得一个database对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS 鸿蒙Next系统中,若要将.db文件打开并获取一个数据库对象,你可以使用SQLite数据库框架。具体步骤如下:
-
引入SQLite库: 确保你的项目中已经包含了SQLite库。通常,HarmonyOS SDK已经内置了SQLite支持,无需额外添加。
-
定义数据库路径: 指定.db文件的存储路径,比如
/data/user/0/你的包名/databases/
目录下。 -
打开数据库: 使用
SQLiteDatabase
类打开数据库。如果文件存在,则打开它;如果不存在,则根据给定名称创建一个新的数据库。SQLiteDatabase db = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE);
其中
dbPath
是.db文件的完整路径。 -
获取数据库对象: 打开数据库后,
db
对象即为所需的数据库对象,你可以通过它执行SQL语句,进行增删改查等操作。
注意:以上代码是基于SQLite的一般使用方式,HarmonyOS的实际API调用可能会有所不同,但原理一致。请确保使用HarmonyOS SDK中的对应API。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html