有没有relationalStore 相关demo或者示例代码?

如题,有没有relationalStore相关的参考代码?

阅读 679
1 个回答

import relationalStore from '@ohos.data.relationalStore'; 
import ItemBean from './ItemBean'; 
import { ValuesBucket } from '@ohos.data.ValuesBucket'; 
 
 
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: 'RdbTest3.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)'; 
 
    // create table if not exists employee (id integer primary key autoincrement, name text not null, age integer, salary real) 
    // 这是一条SQL语句,用于创建一个名为"employee"的表格,如果该表格不存在的话。 
    // 表格包含三个列:id、name和age,其中id是主键,自动递增;name是文本类型,不能为空;age是整数类型。另外还有一个名为salary的列,是实数类型。 
    if (this.rdbStore != undefined) { 
      this.rdbStore.executeSql(SQL_CREATE_TABLE); 
      console.log("建表成功") 
    } 
 
  } 
 
  //批量添加 
  Inserts(){ 
    { 
      if (this.rdbStore == null) { 
        console.error(`Create Store1.db failed! store1 is null`); 
        return; 
      } 
    } 
    let valueBucketArray: Array<relationalStore.ValuesBucket> = new Array(); 
    for (let i=0; i < 10; i++) { 
      const valueBucket: relationalStore.ValuesBucket = { 
        "name": "xxx", // string类型 
        "age": 18, // int类型 
        "salary": 10000, // double类型 
      } 
      valueBucketArray.push(valueBucket); 
    } 
 
    try { 
      this.rdbStore.batchInsert("EMPLOYEE", valueBucketArray ); // 该接口内部使用事务 
      console.info(`Insert data successfully!`); 
    } catch (err) { 
      console.error(`Insert datae failed! err code:${err.code}, err message:${err.message}`) 
    } 
  } 
 
  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.QueryAllData() 
    } 
  } 
 
  UpdateData(updateName: string, name: string, age: number, salary: number) { 
    // 修改数据 
    const valueBucket: ValuesBucket = { 
      NAME: name, 
      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); 
        } 
        console.log("查询到的数据数量为:"+resultSet.rowCount); 
        // 释放数据集的内存 
        this.dataSet = resultSet; 
        resultSet.close(); 
      }) 
    } 
  } 
 
  QueryAllData() { 
    let predicates = new relationalStore.RdbPredicates('EMPLOYEE'); 
    predicates.inAllDevices(); 
    this.UpdateDb(predicates) 
  } 
 
  query(){ 
    { 
      if (this.rdbStore == null) { 
        console.error(`Create Store1.db failed! store1 is null`); 
        return; 
      } 
    } 
    try { 
      let predicates: relationalStore.RdbPredicates = new relationalStore.RdbPredicates("EMPLOYEE"); 
      let resultSet = this.rdbStore.query(predicates); // 查询所有数据 
      // console.info(`Query data successfully! row count:${resultSet.rowCount}`); 
      // resultSet.close(); 
    } catch (err) { 
      console.error(`Query data failed! err code:${err.code}, err message:${err.message}`) 
    } 
  } 
  QueryData(query: string) { 
    console.log("开始查询") 
    let predicates = new relationalStore.RdbPredicates('EMPLOYEE'); 
 
    predicates.equalTo("NAME", query) 
    this.UpdateDb(predicates) 
  } 
 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进