RDB基础功能使用,适用于基础的代码增删改查和对应的数据备份恢复

适用于基础的代码增删改查和对应的数据备份恢复

HarmonyOS
2024-05-22 23:21:14
936浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
是潘达不是胖达

relationStore关系型数据库:创建数据库和表;增删改查;数据备份与恢复;启用事务。

import { relationalStore, ValuesBucket } from '@kit.ArkData'; 
 
export default class RdbTest { 
  rdbStore?: relationalStore.RdbStore; 
  context: Context = getContext(this); 
  dataSet?: relationalStore.ResultSet; 
  dbSet: Array<ItemBean> = []; 
 
  MyGetRdbStore() { 
    // SQLite建立 
    interface StoreConfig { 
      name: string; 
      securityLevel: relationalStore.SecurityLevel; 
    } 
 
    const STORE_CONFIG: relationalStore.StoreConfig = { 
      name: 'RdbTest.db', // 数据库文件名 
      securityLevel: relationalStore.SecurityLevel.S1, // 数据库安全级别 
      encrypt: true, // 可选参数,指定数据库是否加密,默认不加密 
      //  dataGroupId: 'dataGroupID' // 可选参数,仅可在Stage模型下使用,表示为应用组ID,需要向应用市场获取。指定在此Id对应的沙箱路径下创建实例,当此参数不填时,默认在本应用沙箱目录下创建。 
    }; 
    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(`Succeeded in getting RdbStore.`); 
      } 
      this.rdbStore = store; 
    }) 
  } 
 
  CreateTable() { 
    const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS EMPLOYEE (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT NOT NULL,AGE INTEGER,SALARY REAL)'; 
    if (this.rdbStore != undefined) { 
      this.rdbStore.executeSql(SQL_CREATE_TABLE); 
    } 
  } 
 
  InsertData(name: string, age: number, salary: number) { 
    // 插入数据 
    const valueBucket: ValuesBucket = { 
      NAME: name, 
      AGE: age, 
      SALARY: salary 
    }; 
    if (this.rdbStore != undefined) { 
      try { 
        //开启事务 
        this.rdbStore.beginTransaction(); 
        this.rdbStore.insert('EMPLOYEE', valueBucket) 
        //提交事务 
        this.rdbStore.commit(); 
        // console.info(`Succeeded in inserting data. rowId:${rowId}`); 
      } 
      catch (err) { 
        //回滚事务 
        this.rdbStore.rollBack() 
        console.error(`Failed to insert data. Code:${err.code}, message:${err.message}`); 
        return; 
      } 
      //回滚事务 
      //this.rdbStore.rollBack() 
      //提交事务 
      console.log("_______________________________________") 
      this.QueryAllData() 
      this.QueryAllData() 
    } 
  } 
 
  UpdateData(updateName: string, name: string, age: number, salary: number) { 
    // 修改数据 
    const valueBucket: ValuesBucket = { 
      NAME: updateName, 
      AGE: age, 
      SALARY: salary 
    }; 
    let predicates = new relationalStore.RdbPredicates('EMPLOYEE'); // 创建表'EMPLOYEE'的predicates 
    predicates.equalTo('NAME', updateName); // 匹配表'EMPLOYEE'中'NAME'为'Lisa'的字段 
    if (this.rdbStore != undefined) { 
      this.rdbStore.update(valueBucket, predicates, (err, rows) => { 
        if (err) { 
          console.error(`Failed to update data. Code:${err.code}, message:${err.message}`); 
          return; 
        } 
        console.info(`Succeeded in updating data. row count: ${rows}`); 
      }) 
    } 
  } 
 
  DeleteData(deleteName: string) { 
    // 删除数据 
    let predicates = new relationalStore.RdbPredicates('EMPLOYEE'); 
    predicates.equalTo('NAME', deleteName); 
    if (this.rdbStore != undefined) { 
      this.rdbStore.delete(predicates, (err, rows) => { 
        if (err) { 
          console.error(`Failed to delete data. Code:${err.code}, message:${err.message}`); 
          return; 
        } 
        console.info(`Delete rows: ${rows}`); 
      }) 
    } 
  } 
 
  UpdateDb(predicates: relationalStore.RdbPredicates) { 
    // 刷新 
    if (this.rdbStore != undefined) { 
      this.rdbStore.query(predicates, ['ID', 'NAME', 'AGE', 'SALARY'], (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")); 
          const age = resultSet.getLong(resultSet.getColumnIndex("AGE")); 
          const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY")); 
          console.info(`id=${id}, name=${name}, age=${age}, salary=${salary}`); 
          const tmp = new ItemBean(name, age.toString(), salary.toString()); 
          this.dbSet.push(tmp); 
        } 
        // 释放数据集的内存 
        this.dataSet = resultSet; 
        resultSet.close(); 
      }) 
    } 
  } 
 
  QueryAllData() { 
    let predicates = new relationalStore.RdbPredicates('EMPLOYEE'); 
    predicates.inAllDevices(); 
    this.UpdateDb(predicates) 
  } 
 
  QueryData(query: string) { 
    console.log("_______________________________________") 
    let predicates = new relationalStore.RdbPredicates('EMPLOYEE'); 
    predicates.equalTo("NAME", query) 
    this.UpdateDb(predicates) 
    console.log("_______________________________________") 
  } 
 
  backup() { 
    if (this.rdbStore != undefined) { 
      this.rdbStore.backup('dbBackup.db', (err) => { 
        if (err) { 
          console.error(`Failed to backup data. Code:${err.code},message:${err.message}`); 
          return; 
        } 
        console.info(`Succeeded in backuping data.`); 
      }) 
    } 
  } 
 
  //回复数据库 
  restore() { 
    if (this.rdbStore != undefined) { 
      this.rdbStore.restore('dbBackup.db', (err) => { 
        if (err) { 
          console.error(`Failed to restore data. Code:${err.code},message:${err.message}`); 
          return; 
        } 
        console.info(`Succeeded in restoring data.`); 
      }) 
    } 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.
  • 145.
  • 146.
  • 147.
  • 148.
  • 149.
  • 150.
  • 151.
  • 152.
  • 153.
  • 154.
  • 155.
  • 156.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162.
  • 163.
  • 164.
  • 165.
  • 166.
  • 167.
  • 168.
  • 169.
  • 170.
  • 171.
分享
微博
QQ
微信
回复
2024-05-23 21:06:40


相关问题
如何构建数据库ORM增删改基础能力
2564浏览 • 1回复 待解决
编译适用于HarmonyOS系统openssl
2288浏览 • 1回复 待解决
Pycharm编译器只适用于JAVA吗
9783浏览 • 2回复 待解决