kvStore - 比特日记
kvStore
键值数据库
复制成功
1
2
3
4
5
6
7
1存储能力强于用户首选项,不能存储复杂数据
2json作为存储对象,覆盖存储,直接存储到硬盘不用flush
3实现多个设备终端协同
4
5设备协同数据库:单条记录 key<=896B, value<4MB
6单版本数据库 key<=1KB, value<4MB
7最多支持同时打开16个键值型分布式数据库
存储能力强于用户首选项,不能存储复杂数据
json作为存储对象,覆盖存储,直接存储到硬盘不用flush
实现多个设备终端协同
设备协同数据库:单条记录 key<=896B, value<4MB
单版本数据库 key<=1KB, value<4MB
最多支持同时打开16个键值型分布式数据库
复制成功
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
1import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
2import { hilog } from '@kit.PerformanceAnalysisKit';
3import { window } from '@kit.ArkUI';
4import { cardDBUtils } from '../utils/CardDBUtils';
5import preferencesUtil from '../utils/PreferencesUtils';
6import kvStore from '../utils/KVStore';
7
8const DOMAIN = 0x0000;
9
10export default class EntryAbility extends UIAbility {
11 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
12 this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
13 hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
14 }
15
16 onDestroy(): void {
17 hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy');
18 }
19
20 onWindowStageCreate(windowStage: window.WindowStage): void {
21 // 加载数据库
22 cardDBUtils.initCardDB(this.context, 'goodcard')
23 preferencesUtil.init(this.context, 'goodMail')
24 preferencesUtil.insertData('theme', 'pink')
25
26 kvStore.init(this.context)
27 kvStore.createStore('myStore')
28....
import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
import { cardDBUtils } from '../utils/CardDBUtils';
import preferencesUtil from '../utils/PreferencesUtils';
import kvStore from '../utils/KVStore';
const DOMAIN = 0x0000;
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
}
onDestroy(): void {
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy');
}
onWindowStageCreate(windowStage: window.WindowStage): void {
// 加载数据库
cardDBUtils.initCardDB(this.context, 'goodcard')
preferencesUtil.init(this.context, 'goodMail')
preferencesUtil.insertData('theme', 'pink')
kvStore.init(this.context)
kvStore.createStore('myStore')
....
复制成功
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
1import { distributedKVStore } from "@kit.ArkData";
2import { BusinessError } from "@kit.BasicServicesKit";
3
4export class KVStore {
5 // 代表数据库管理对象
6 private kvManager: distributedKVStore.KVManager | undefined = undefined
7 // 管理数据库里面数据列表
8 private kvStore: distributedKVStore.SingleKVStore | undefined = undefined
9
10 init(context: Context) {
11 // 定义数据库初始化需要的字段
12 const kvManagerConfig: distributedKVStore.KVManagerConfig = {
13 context: context,
14 bundleName: 'com.example.snailmall'
15 }
16
17 try {
18 this.kvManager = distributedKVStore.createKVManager(kvManagerConfig)
19 console.log('success create kvManager')
20 } catch (e) {
21 let error = e as BusinessError
22 console.log(`failed to create kvManager, ${error.name}-${error.message}`)
23 }
24 }
25
26 createStore(storeId: string) {
27 try {
28 // 定义store参数
29 const options: distributedKVStore.Options = {
30 createIfMissing: true,
31 encrypt: false,
32 backup: false,
33 autoSync: false,
34 // kvStoreType不填时,默认创建多设备协同数据库
35 kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
36 // 多设备协同数据库 kvStoreType:distributedKVStore.KVStoreType.DEVICE_COLLABORATION
37 securityLevel: distributedKVStore.SecurityLevel.S1
38 }
39
40 this.kvManager?.getKVStore<distributedKVStore.SingleKVStore>(storeId, options,
41 (err, store: distributedKVStore.SingleKVStore) => {
42 if (err) {
43 console.log('create kvStore failed')
44 return
45 }
46 console.log('create kvStore success')
47 this.kvStore = store
48 })
49 } catch (e) {
50 let error = e as BusinessError
51 console.log(`failed to create kvStore, ${error.name}-${error.message}`)
52 }
53 }
54
55 putData(key: string, value: string) {
56 try {
57 this.kvStore?.put(key, value, (err) => {
58 if (err) {
59 console.log(`kvStore insert data failed, ${err.name}-${err.code}`)
60 return
61 }
62 console.log('kvStore insert data success')
63 })
64 } catch (e) {
65 let error = e as BusinessError
66 console.log(`kvStore insert data failed, ${error.name}-${error.message}`)
67 }
68 }
69
70 getData(key: string) {
71 return new Promise((resolve: (value: string | number | boolean | Uint8Array) => void,
72 reject: (value?: string) => void) => {
73 this.kvStore?.get(key, (err, data) => {
74 if (err) {
75 console.log(`kvStore get data failed, ${err.name}-${err.code}`)
76 reject('kvStore get data failed')
77 return
78 }
79 console.log(`kvStore get data success, ${data}`)
80 resolve(data)
81 })
82 })
83 }
84
85 deleteData(key: string) {
86 this.kvStore?.delete(key, (err, data) => {
87 if (err) {
88 console.log(`kvStore get data failed, ${err.name}-${err.code}`)
89 return
90 }
91 console.log(`kvStore get data success, ${data}`)
92 })
93 }
94}
95
96const kvStore = new KVStore()
97
98export default kvStore
import { distributedKVStore } from "@kit.ArkData";
import { BusinessError } from "@kit.BasicServicesKit";
export class KVStore {
// 代表数据库管理对象
private kvManager: distributedKVStore.KVManager | undefined = undefined
// 管理数据库里面数据列表
private kvStore: distributedKVStore.SingleKVStore | undefined = undefined
init(context: Context) {
// 定义数据库初始化需要的字段
const kvManagerConfig: distributedKVStore.KVManagerConfig = {
context: context,
bundleName: 'com.example.snailmall'
}
try {
this.kvManager = distributedKVStore.createKVManager(kvManagerConfig)
console.log('success create kvManager')
} catch (e) {
let error = e as BusinessError
console.log(`failed to create kvManager, ${error.name}-${error.message}`)
}
}
createStore(storeId: string) {
try {
// 定义store参数
const options: distributedKVStore.Options = {
createIfMissing: true,
encrypt: false,
backup: false,
autoSync: false,
// kvStoreType不填时,默认创建多设备协同数据库
kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
// 多设备协同数据库 kvStoreType:distributedKVStore.KVStoreType.DEVICE_COLLABORATION
securityLevel: distributedKVStore.SecurityLevel.S1
}
this.kvManager?.getKVStore<distributedKVStore.SingleKVStore>(storeId, options,
(err, store: distributedKVStore.SingleKVStore) => {
if (err) {
console.log('create kvStore failed')
return
}
console.log('create kvStore success')
this.kvStore = store
})
} catch (e) {
let error = e as BusinessError
console.log(`failed to create kvStore, ${error.name}-${error.message}`)
}
}
putData(key: string, value: string) {
try {
this.kvStore?.put(key, value, (err) => {
if (err) {
console.log(`kvStore insert data failed, ${err.name}-${err.code}`)
return
}
console.log('kvStore insert data success')
})
} catch (e) {
let error = e as BusinessError
console.log(`kvStore insert data failed, ${error.name}-${error.message}`)
}
}
getData(key: string) {
return new Promise((resolve: (value: string | number | boolean | Uint8Array) => void,
reject: (value?: string) => void) => {
this.kvStore?.get(key, (err, data) => {
if (err) {
console.log(`kvStore get data failed, ${err.name}-${err.code}`)
reject('kvStore get data failed')
return
}
console.log(`kvStore get data success, ${data}`)
resolve(data)
})
})
}
deleteData(key: string) {
this.kvStore?.delete(key, (err, data) => {
if (err) {
console.log(`kvStore get data failed, ${err.name}-${err.code}`)
return
}
console.log(`kvStore get data success, ${data}`)
})
}
}
const kvStore = new KVStore()
export default kvStore
复制成功
1
2
3
1kvStore insert data success
2kvStore get data success, Lining
3kvStore get data success, {"id":1,"name":"Wyoming"}
kvStore insert data success
kvStore get data success, Lining
kvStore get data success, {"id":1,"name":"Wyoming"}
Copyright ©2010-2022 比特日记 All Rights Reserved.
Powered By 可尔物语
浙ICP备11005866号-12