鸿蒙续写应用数据持久化

206 阅读1分钟

3.@ohos.data.relationalStore (关系型数据库)


import relationalStore from '@ohos.data.relationalStore'; // 导入模块
import common from '@ohos.app.ability.common';

@Entry
@Component
struct Index {
  private  context = getContext(this) as common.UIAbilityContext;
  private  store: relationalStore.RdbStore;

  save = ()=>{
    this.store.insert('Abc',{
      NAME: '姓名'+Math.random(),
      AGE: 17
    }).then(res=>{
      console.log('保存成功')
    })
  }

  read = async ()=>{
    let temarr = []
    let cols = ['ID','NAME','AGE']
    let predicates = new relationalStore.RdbPredicates("Abc"); // 确定查询的数据库
    predicates.beginsWith('NAME','姓名')
    const res = await this.store.query(predicates,cols)
    if(res.rowCount > 0){
      for(let i =0;i< res.rowCount;i++){
        console.log('开始构建数据'+i)
        res.goToRow(i);
        const obj = {};
        for(const key of cols){
          console.log('当前的key的值'+key)
          obj[key] = res.getString(res.getColumnIndex(key))
        }
        console.log(`这一行的数据是内容是`+ obj)
        temarr.push(obj)
      }
    }
    console.log('temarr'+JSON.stringify(temarr))
  }

  async del(){
    let predicates = new relationalStore.RdbPredicates("Abc"); // 确定查询的数据库具体的表
    predicates.equalTo("ID",1);
    await this.store.delete(predicates);
    console.log('删除成功')
  }

  async  update(){
    let predicates = new relationalStore.RdbPredicates("Abc"); // 确定查询的数据库具体的表
    predicates.beginsWith('NAME','姓名')
    await this.store.update({AGE: 18 }, predicates)
    console.log('更新成功')
  }

  aboutToAppear(){
    const STORE_CONFIG = {
      name: 'RdbTest.db', // 数据库文件名
      securityLevel: relationalStore.SecurityLevel.S1 // 数据库安全级别
    };

    const SQL_CREATE_TABLE = `CREATE TABLE IF NOT EXISTS Abc (
            ID INTEGER PRIMARY KEY AUTOINCREMENT,
            NAME TEXT NOT NULL,
            AGE INTEGER,
            SALARY REAL,
            CODES BLOB
       )`; // 建表Sql语句

    relationalStore.getRdbStore(this.context, STORE_CONFIG, (err, store) => {
      if (err) {
        console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`);
        return;
      }
      console.info(`Succeeded in getting RdbStore.`);
      store.executeSql(SQL_CREATE_TABLE); // 创建数据表
      console.log('数据是库创建完成'+store)
      // 这里执行数据库的增、删、改、查等操作
      this.store = store;
    });
  }

  build() {
    Column(){
      Button('c 存入数据是').onClick(this.save)
      Button('读取值 by query').onClick(()=>this.read())
      Button('删除').onClick(()=>this.del())
      Button('修改').onClick(()=>this.update())
    }
  }
}