create-dataability.md 2.5 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4 5 6 7 8 9 10 11
# 创建DataAbility


实现DataAbility中Insert、Query、Update、Delete接口的业务内容。保证能够满足数据库存储业务的基本需求。BatchInsert与ExecuteBatch接口已经在系统中实现遍历逻辑,依赖Insert、Query、Update、Delete接口逻辑,来实现数据的批量处理。


创建DataAbility的代码示例如下:

```ts
import featureAbility from '@ohos.ability.featureAbility'
import dataAbility from '@ohos.data.dataAbility'
Y
yuyaozhi 已提交
12
import relationalStore from '@ohos.data.relationalStore'
Z
zengyawen 已提交
13 14

const TABLE_NAME = 'book'
L
liuliu 已提交
15
const STORE_CONFIG: relationalStore.StoreConfig = { name: 'book.db',securityLevel: 1 }
Z
zengyawen 已提交
16
const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS book(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, introduction TEXT NOT NULL)'
Y
yuyaozhi 已提交
17
let rdbStore: relationalStore.RdbStore = undefined
Z
zengyawen 已提交
18 19 20 21 22

export default {
  onInitialized(abilityInfo) {
    console.info('DataAbility onInitialized, abilityInfo:' + abilityInfo.bundleName)
    let context = featureAbility.getContext()
Y
yuyaozhi 已提交
23
    relationalStore.getRdbStore(context, STORE_CONFIG, (err, store) => {
Z
zengyawen 已提交
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
      console.info('DataAbility getRdbStore callback')
      store.executeSql(SQL_CREATE_TABLE, [])
      rdbStore = store
    });
  },
  insert(uri, valueBucket, callback) {
    console.info('DataAbility insert start')
    rdbStore.insert(TABLE_NAME, valueBucket, callback)
  },
  batchInsert(uri, valueBuckets, callback) {
    console.info('DataAbility batch insert start')
    for (let i = 0;i < valueBuckets.length; i++) {
      console.info('DataAbility batch insert i=' + i)
      if (i < valueBuckets.length - 1) {
        rdbStore.insert(TABLE_NAME, valueBuckets[i], (err: any, num: number) => {
          console.info('DataAbility batch insert ret=' + num)
        })
      } else {
        rdbStore.insert(TABLE_NAME, valueBuckets[i], callback)
      }
    }
  },
  query(uri, columns, predicates, callback) {
    console.info('DataAbility query start')
    let rdbPredicates = dataAbility.createRdbPredicates(TABLE_NAME, predicates)
    rdbStore.query(rdbPredicates, columns, callback)
  },
  update(uri, valueBucket, predicates, callback) {
    console.info('DataAbilityupdate start')
    let rdbPredicates = dataAbility.createRdbPredicates(TABLE_NAME, predicates)
    rdbStore.update(valueBucket, rdbPredicates, callback)
  },
  delete(uri, predicates, callback) {
    console.info('DataAbilitydelete start')
    let rdbPredicates = dataAbility.createRdbPredicates(TABLE_NAME, predicates)
    rdbStore.delete(rdbPredicates, callback)
  }
};
```