@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)