持久化存储—关系数据库

在程序中要使用关系数据库,大概可以分为两个步骤,初始化数据库和对于数据库内数据的增、删、改、查

下面就分步来介绍这些操作

数据库的基本使用

初始化数据库

初始化数据库可以分为两个基本步骤

导入关系型数据库模块

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行,也就是表头,不指向任何一行,所以在读取第一行数据之前一定要先让指针向下移动一行(指针初始状态如下图)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值