在程序中要使用关系数据库,大概可以分为两个步骤,初始化数据库和对于数据库内数据的增、删、改、查
下面就分步来介绍这些操作
数据库的基本使用
初始化数据库
初始化数据库可以分为两个基本步骤
导入关系型数据库模块
import relationalStore from '@ohos.data.relationalStore'
初始化数据库表
// 1.rdb配置
const config = {
// 数据库文件名
name: 'Demo1DB',
// 数据库安全级别
securtyLevel: relationalStore.SecurityLevel.S1
}
// 2.初始化表的SQL
const sql = `建表sql语句`
// 3.获取rdb
relationalStore.getRdbStore(this.context,config,(err,rdbStore) => {
// 4.执行sql,后续的所有增删改查都是使用rdbStore对象
rdbStore.executeSql(sql)
})
新增数据
在此处rdbStore提供了方法来替代原生sql语言
// 1.准备数据
let data = {id: 1, name: 'data1', isReady: false};
this.rdbStore.insert(this.tableName, data)
删除数据
在此处rdbStore提供了方法来替代原生sql语言
// 1.查询条件
let predicates = new relationalStore.RdbPredicates(this.tableName)
predicates.equalTo('ID',id)
// 2.执行删除
this.rdbStore.delete(predicates)
修改数据
在此处rdbStore提供了方法来替代原生sql语言
// 1.要更新的数据
let data = {'isReady': true}
// 2.查询条件,RdbPredicates就是条件谓词
let predicates = new relationalStoer.RdbPredicates(this.tableName)
predicates.equaTo('ID',id)
// 3.执行更新
this.rdbStore.update(task,predicates)
查询数据
查询数据需要分为两步,第一部查询数据,会得到一个数据集合,需要通过第二步解析结果来将数据集合中的数据解析出来
1.查询数据
在此处rdbStore提供了方法来替代原生sql语言
// 1.查询条件
let predicates = new relationalStore.RdbPredicates(this.tableName)
// 2.执行查询
let result =await this.rdbStore.qurey(predicates,['ID','NAME','IsFinished'])
2.解析结果
// 1.准备数组保存结果
let datas: any[] = []
while (!result.isAtLastRow){
// 指针移动到下一行数据
result.goTONextRow()
// 根据字段名获取字段index,从而获取字段值
let id = result.getLong(result.getColumnIndex('ID'))
let name = result.getString(result.getColumnIndex('NAME'))
task.push({id,name})
}
result会维护一个指针指向每一行,通过这个指针指向来获取每一行的数据。注意,指针在初始状态下指向-1行,也就是表头,不指向任何一行,所以在读取第一行数据之前一定要先让指针向下移动一行(指针初始状态如下图)