鸿蒙开发-关系型数据库实现数据持久化

220 阅读1分钟

关系型数据库实现数据持久化

创建数据库

Button('创建/打开数据库')
  .onClick(async ()=>{
    await relationalStore.getRdbStore(getContext(),{
      name: 'test.db',// 数据库名称
      securityLevel:relationalStore.SecurityLevel.S1 // 数据库安全等级
    })
    promptAction.showToast({message: '数据库创建成功'})
  })

image.png

删除数据库

Button('删除数据库')
  .onClick(async ()=>{
    await relationalStore.deleteRdbStore(getContext(),'test.db')
    promptAction.showToast({message: '数据库删除成功'})
  })

创建数据表

Button('创建数据表')
  .onClick(()=>{
    this.RdbStore?.executeSql(this.sql)
  })

查看数据表结构

Button('查看数据表')
  .onClick(async ()=>{
    const predicates = new relationalStore.RdbPredicates('test')
    const result =await this.RdbStore?.query(predicates)
     AlertDialog.show({ message: JSON.stringify(result?.columnNames)})
  })

image.png

添加数据

Button('添加数据')
  .onClick(async ()=>{
    const id =  await this.RdbStore?.insert('test',{
      id: null,
      name: '张三',
      age: 18
    })
    promptAction.showToast({message: '添加数据的id为'+id})
  })

image.png

image.png

查询数据

//查询数据
Button('查询数据')
  .onClick(async ()=>{
    const predicates = new relationalStore.RdbPredicates('test')
    const resultSet = await this.RdbStore?.query(predicates)
    console.log(`查询数据结果`, )
    while (resultSet?.goToNextRow()) {

      const id = resultSet.getLong(resultSet.getColumnIndex("ID"));
      const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
      const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
      console.info('数据'+`id=${id}, name=${name}, age=${age}`);
    }
    resultSet?.close();

  })

image.png

修改数据

Button('修改数据')
  .onClick(async ()=>{
    const predicates = new relationalStore.RdbPredicates('test')
    predicates.equalTo('id', 1)
    await this.RdbStore?.update({
      name: '李四',
      age: 18
    },predicates)
    const resultSet = await this.RdbStore?.query(predicates)
    while (resultSet?.goToNextRow()) {
      const id = resultSet.getLong(resultSet.getColumnIndex("ID"));
      const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
      const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
      console.info('123'+`id=${id}, name=${name}, age=${age}`);
    }
    // 释放数据集的内存,若不释放可能会引起fd泄露与内存泄露
    resultSet?.close();
  })

image.png

删除数据

Button('删除数据')
  .onClick(async ()=>{
    const predicates = new relationalStore.RdbPredicates('test')
    predicates.in('id', [1,2,3,4])
    // 删除完成,返回受影响的行数
    const result = await this.RdbStore?.delete(predicates)
    AlertDialog.show({ message: JSON.stringify('删除结果'+result)})
  })

recording.gif