前端手动刷新显示Rdb数据

前端手动刷新显示Rdb数据

HarmonyOS
2024-05-22 23:20:15
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
chenyi1976

一、功能场景描述及使用场景

读取本地已有数据的db文件。并进行前端显示。通过对后台数据的显示,可直接筛选出当前所需要的数据值,无需在沙箱路径种导出数据库再用相应的数据库查看软件进行查看

二、核心代码解释

通过后端的增删改查将后端的数据进行储存,在前端的调用下进行前端查看展示。其中用到了

ResultSet

结果集是指用户调用关系型数据库查询接口之后返回的结果集合,提供了多种灵活的数据访问方式,以便用户获取各项数据。

this.dbSet.push(tmp);

*将新元素追加到数组的末尾,并返回数组的新长度。

前置准备:

export default class RdbTest { 
  
  rdbStore?: relationalStore.RdbStore; 
  context: Context = getContext(this); 
  dataSet?: relationalStore.ResultSet; 
  dbSet: Array<ItemBean> = []; 
  
  MyGetRdbStore() { 
    interface StoreConfig { 
      name: string; 
      securityLevel: relationalStore.SecurityLevel; 
    } 
    const STORE_CONFIG: StoreConfig = { 
      name: 'RdbTest.db', 
      securityLevel: relationalStore.SecurityLevel.S1 
    }; 
  
    relationalStore.getRdbStore(this.context, STORE_CONFIG, (err, store) => { 
      if (err) { 
        console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`); 
        return; 
      } else { 
        console.info(`成功获取 RdbStore.`); 
      } 
      this.rdbStore = store; 
      this.CreateTable(); 
    } 
    ) 
  } 
  
  CreateTable() { 
    if (this.rdbStore != undefined) { 
  
      const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS EMPLOYEE (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT NOT NULL)'; 
     this.rdbStore.executeSql(SQL_CREATE_TABLE); 
      console.log("成功建表") 
    } 
  } 
  
  InsertData(name: number) { 
  
    const valueBucket: ValuesBucket = { 
      'NAME': name 
    }; 
  
    if (this.rdbStore != undefined) { 
  
      this.rdbStore.insert('EMPLOYEE', 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}`); 
      }) 
    } 
  } 
  }

核心刷新代码:

  UpdateDb(predicates: relationalStore.RdbPredicates) { 
    // 刷新 
  
    if (this.rdbStore != undefined) { 
      this.rdbStore.query(predicates, ['ID', 'NAME'], (err, resultSet) => { 
        if (err) { 
          console.error(`Failed to query data. Code:${err.code}, message:${err.message}`); 
          return; 
        } 
        console.info(`ResultSet column names: ${resultSet.columnNames}, column count: ${resultSet.columnCount}`); 
        // resultSet是一个数据集合的游标,默认指向第-1个记录,有效的数据从0开始。 
        this.dbSet = []; 
  
        while (resultSet.goToNextRow()) { 
          const id = resultSet.getLong(resultSet.getColumnIndex("ID")); 
          const name = resultSet.getString(resultSet.getColumnIndex("NAME")); 
          console.info(`id=${id}, name=${name}`); 
          const num = new Number(name).valueOf(); 
  
          const tmp = new ItemBean(num); 
          this.dbSet.push(tmp); 
        } 
        // 释放数据集的内存 
        this.dataSet = resultSet; 
        resultSet.close(); 
      }) 
    } 
  } 
  
  QueryAllData() { 
    let predicates = new relationalStore.RdbPredicates('EMPLOYEE'); 
    predicates.inAllDevices(); 
    this.UpdateDb(predicates)

实现效果

适配的版本信息

IDE:DevEco Studio 4.0.3.600

SDK:HarmoneyOS 4.0.0.41

分享
微博
QQ
微信
回复
2024-05-23 18:15:01
相关问题
鸿蒙的RDB数据库好用吗
1403浏览 • 2回复 已解决
关系型数据rdb中如何进行加密
677浏览 • 1回复 待解决
Swiper 组件嵌套图片刷新数据会闪烁
357浏览 • 1回复 待解决
卡片的数据刷新时间如何支持配置
776浏览 • 1回复 待解决
修改ForEach使用的数据对象,UI不刷新
284浏览 • 1回复 待解决
如何手动重启 OceanBase 集群?
3615浏览 • 1回复 待解决
Native rdb写入是否有线程安全管理
832浏览 • 1回复 待解决
如何从多个 RDB 文件中恢复 Redis?
1589浏览 • 1回复 待解决
求大佬告知bigint要怎么写入rdb
582浏览 • 1回复 待解决
PolarDB如何手动添加limit分页功能?
1354浏览 • 1回复 待解决
绘制手动生成线条的坐标系
375浏览 • 1回复 待解决