持久化存储—关系数据库

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

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

数据库的基本使用

初始化数据库

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

导入关系型数据库模块

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

相关推荐

  1. uniapp使用数据持久存储

    2024-07-21 01:26:02       33 阅读
  2. 持久存储 StorageClass

    2024-07-21 01:26:02       48 阅读
  3. Unity数据持久—Json存档

    2024-07-21 01:26:02       42 阅读
  4. 分享一个Pinia存储数据持久插件

    2024-07-21 01:26:02       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 01:26:02       106 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 01:26:02       116 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 01:26:02       95 阅读
  4. Python语言-面向对象

    2024-07-21 01:26:02       103 阅读

热门阅读

  1. Head size 160 is not supported by PagedAttention.

    2024-07-21 01:26:02       24 阅读
  2. 数据仓库中的数据治理

    2024-07-21 01:26:02       27 阅读
  3. Piping(√)

    2024-07-21 01:26:02       26 阅读
  4. KTV点歌系统有什么作用?

    2024-07-21 01:26:02       27 阅读