鸿蒙开发实践——基于关系型数据库的数据

关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。

  • 场景一:基于RDB已提供API的数据库基础使用

  • 场景二:基于executeSql、querySql执行增删改查复杂SQL语句

  • 场景三:事务的使用

  • 场景四:批量插入数据的不同实现方式及性能对比

  • 场景五:数据库备份与恢复

  • 场景六:全文检索(FTS)使用思路

方案描述

场景一:基于 RDB 已提供 API 的数据库基础使用

方案

通过insert、update、delete、query接口及关系型数据库谓词predicates的数据库基础操作。 RdbPredicates :数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。常用的方法有equalTo,notEqualTo,or,and,isnull,between,orderby,groupby等。

DD一下:在鸿蒙开发工作中,有各种棘手问题。小编结合自身学习与工作实践,将容易踩坑的环节和对应的解决思路整理成册,资料包含了鸿蒙开发必掌握的核心知识要点(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙技术知识点。

请移步前往:鸿蒙全栈开发学习指南 查阅

核心代码

文中的操作主要基于如下的数据库,详细数据库使用步骤可参考:

//创建数据库及相关表
export default class Rdb{
  rdbStore?: relationalStore.RdbStore;
  context:Context = getContext();
 
  constructor(storeName: string)
  {
    // 数据库配置
    const STORE_CONFIG:relationalStore.StoreConfig = {
      name: storeName,
      securityLevel: relationalStore.SecurityLevel.S1,
    };
    // 获取数据库Store
    relationalStore.getRdbStore(this.context, STORE_CONFIG, (err: BusinessError, rdbStore: relationalStore.RdbStore) => {
      this.rdbStore = rdbStore;
      if (err) {
        console.error(`Get RdbStore failed, code is ${err.code},message is ${err.message}`);
        return;
      }
      console.info(`Get ${storeName} RdbStore successfully.`);
    })
  }
 
  CreateTable()
  {
    //建表语句
    const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS STUDENT (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,AGE INTEGER,SALARY REAL)';
    if(this.rdbStore){
      this.rdbStore.executeSql(SQL_CREATE_TABLE);
      console.info(`CreateTable successfully.`);
    }
  }
}

通过ValuesBucket构建数据,insert接口插入。

InsertData(name:string,age:number,salary:number)
{
  // 插入数据
  const valueBucket: ValuesBucket = {
    'NAME': name,
    'AGE': age,
    'SALARY': salary
  };
  if(this.rdbStore){
    this.rdbStore.insert('STUDENT', valueBucket, (err, rowId) => {
      if (err) {
        console.error(`Failed to insert data. Code:${err.code}, message:${err.message}`);
        return;
      }
      console.info(`Succeeded in inserting data. rowId:${rowId}`);
    })
  }
}

通过predicates构建删除条件,删除name为Lisa的数据,delete接口执行删除。 

DeleteData()
{
  let predicates = new relationalStore.RdbPredicates("STUDENT");
  predicates.equalTo("NAME", "Lisa");
  if(this.rdbStore != undefined) {
    (this.rdbStore as relationalStore.Rdb
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值