1# 创建DataAbility 2 3 4实现DataAbility中Insert、Query、Update、Delete接口的业务内容。保证能够满足数据库存储业务的基本需求。BatchInsert与ExecuteBatch接口已经在系统中实现遍历逻辑,依赖Insert、Query、Update、Delete接口逻辑,来实现数据的批量处理。 5 6 7创建DataAbility的代码示例如下: 8 9```ts 10import featureAbility from '@ohos.ability.featureAbility'; 11import dataAbility from '@ohos.data.dataAbility'; 12import Want from '@ohos.app.ability.Want'; 13import common from '@ohos.app.ability.common'; 14import { AsyncCallback, BusinessError } from '@ohos.base'; 15import rdb from '@ohos.data.rdb'; 16 17const TABLE_NAME = 'book' 18const STORE_CONFIG: rdb.StoreConfig = { name: 'book.db'} 19const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS book(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, introduction TEXT NOT NULL)' 20let rdbStore: rdb.RdbStore | undefined = undefined 21 22class DataAbility { 23 onInitialized(want: Want) { 24 console.info('DataAbility onInitialized, abilityInfo:' + want.bundleName) 25 let context: common.BaseContext = {stageMode: featureAbility.getContext().stageMode} 26 rdb.getRdbStore(context, STORE_CONFIG, 1, (err, store) => { 27 console.info('DataAbility getRdbStore callback') 28 store.executeSql(SQL_CREATE_TABLE, []) 29 rdbStore = store 30 }); 31 } 32 insert(uri: string, valueBucket: rdb.ValuesBucket, callback: AsyncCallback<number>) { 33 console.info('DataAbility insert start') 34 if (rdbStore) { 35 rdbStore.insert(TABLE_NAME, valueBucket, callback) 36 } 37 } 38 batchInsert(uri: string, valueBuckets: Array<rdb.ValuesBucket>, callback: AsyncCallback<number>) { 39 console.info('DataAbility batch insert start') 40 if (rdbStore) { 41 for (let i = 0;i < valueBuckets.length; i++) { 42 console.info('DataAbility batch insert i=' + i) 43 if (i < valueBuckets.length - 1) { 44 rdbStore.insert(TABLE_NAME, valueBuckets[i], (err: BusinessError, num: number) => { 45 console.info('DataAbility batch insert ret=' + num) 46 }) 47 } else { 48 rdbStore.insert(TABLE_NAME, valueBuckets[i], callback) 49 } 50 } 51 } 52 } 53 query(uri: string, columns: Array<string>, predicates: dataAbility.DataAbilityPredicates, 54 callback: AsyncCallback<rdb.ResultSet>) { 55 console.info('DataAbility query start') 56 let rdbPredicates = dataAbility.createRdbPredicates(TABLE_NAME, predicates) 57 if (rdbStore) { 58 rdbStore.query(rdbPredicates, columns, callback) 59 } 60 } 61 update(uri: string, valueBucket: rdb.ValuesBucket, predicates: dataAbility.DataAbilityPredicates, 62 callback: AsyncCallback<number>) { 63 console.info('DataAbilityupdate start') 64 let rdbPredicates = dataAbility.createRdbPredicates(TABLE_NAME, predicates) 65 if (rdbStore) { 66 rdbStore.update(valueBucket, rdbPredicates, callback) 67 } 68 } 69 delete(uri: string, predicates: dataAbility.DataAbilityPredicates, callback: AsyncCallback<number>) { 70 console.info('DataAbilitydelete start') 71 let rdbPredicates = dataAbility.createRdbPredicates(TABLE_NAME, predicates) 72 if (rdbStore) { 73 rdbStore.delete(rdbPredicates, callback) 74 } 75 } 76} 77 78export default new DataAbility() 79``` 80