@ohos.data.relationalStore (关系型数据库)的使用
·
概述
当我们想要在鸿蒙开发中遇到关系型数据库时,我们可以按下述方式来使用
环境描述
开发环境:Windows 10
DevEco Studio 版本:DevEco Studio 5.0.0 Release(5.0.3.910)
SDK 版本:5.0.0.70(Full SDK)
设备型号:黄鹂
系统版本:OpenHarmony 5.0.0.710
步骤
1、创建数据库,我们在创建数据库时,需要自己插入sql语句,例如:
async createData(context: Context) {
console.info(`index Create !`);
const CONFIG: relationalStore.StoreConfig = {
name: "Store.db",
securityLevel: relationalStore.SecurityLevel.S1,
};
// 默认数据库文件路径为 context.databaseDir + rdb + StoreConfig.name
let store: relationalStore.RdbStore = await relationalStore.getRdbStore(context, CONFIG);
console.info(`index Create Store.db successfully!`);
// 创建表
const CREATE_TABLE_SQL = "CREATE TABLE IF NOT EXISTS test (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT NOT NULL, " +
"age INTEGER, " +
"salary REAL, " +
"blobType BLOB)";
await store.executeSql(CREATE_TABLE_SQL);
console.info(`index Create table test successfully!`);
}
在使用时可以用以下方式:
let context = getContext(this);
await this.createData(context)
2.插入数据
async insertData(context: Context, valueBucketArray: Array<relationalStore.ValuesBucket>) {
const CONFIG: relationalStore.StoreConfig = {
name: "Store.db",
securityLevel: relationalStore.SecurityLevel.S1,
};
// 默认数据库文件路径为 context.databaseDir + rdb + StoreConfig.name
let store: relationalStore.RdbStore = await relationalStore.getRdbStore(context, CONFIG);
console.info(`index insert Store.db successfully!`);
// 数据插入
await store.batchInsert("test", valueBucketArray as Object as Array<relationalStore.ValuesBucket>);
}
在使用时,我们需要先准备数据,再执行插入数据的操作:
// 数据准备
const count = 5
let valueBucketArray = new Array<relationalStore.ValuesBucket>(count);
for (let i = 0; i < count; i++) {
let v : relationalStore.ValuesBucket = {
id: i,
name: "zhangsan" + i,
age: 20,
salary: 5000 + 50 * i
};
valueBucketArray[i] = v;
}
console.log('index insert start')
await this.insertData(context, valueBucketArray)
3.查询数据
async queryData(context: Context): Promise<Array<relationalStore.ValuesBucket>> {
const CONFIG: relationalStore.StoreConfig = {
name: "Store.db",
securityLevel: relationalStore.SecurityLevel.S1,
};
// 默认数据库文件路径为 context.databaseDir + rdb + StoreConfig.name
let store: relationalStore.RdbStore = await relationalStore.getRdbStore(context, CONFIG);
console.info(`index query Store.db successfully!`);
// 获取结果集
let predicates: relationalStore.RdbPredicates = new relationalStore.RdbPredicates("test");
let resultSet = await store.query(predicates); // 查询所有数据
console.info(`index Query data successfully! row count:${resultSet.rowCount}`);
let index = 0;
let result = new Array<relationalStore.ValuesBucket>(resultSet.rowCount)
resultSet.goToFirstRow()
do {
result[index++] = resultSet.getRow()
} while (resultSet.goToNextRow());
resultSet.close();
return result
}
我们可以遍历数据以便查看:
let index = 0
console.log('index query start')
let ret = await this.queryData(context) as Array<relationalStore.ValuesBucket>
for (let v of ret) {
console.info(`index Row[${index}].id = ${v.id}`)
console.info(`index Row[${index}].name = ${v.name}`)
console.info(`index Row[${index}].age = ${v.age}`)
console.info(`index Row[${index}].salary = ${v.salary}`)
index++
}
4.删除数据库
async clearData(context: Context) {
const CONFIG: relationalStore.StoreConfig = {
name: "Store.db",
securityLevel: relationalStore.SecurityLevel.S1,
};
// 默认数据库文件路径为 context.databaseDir + rdb + StoreConfig.name
await relationalStore.deleteRdbStore(context, CONFIG);
console.info(`index Delete Store.db successfully!`);
}
使用方法就比较简单了,直接删除就可以了
await this.clearData(context)
如上 我们就可以开启我们的关系型数据库的使用之旅了
更多推荐
所有评论(0)