HarmonyOSAPI:@ohos.data.distributedData (分布式数据管理)
版本:v3.1 Beta
@ohos.data.distributedData (分布式数据管理)
sync
sync(deviceIds: string[], mode: SyncMode, delayMs?: number): void
在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见分布式数据服务概述。
此接口能力在HarmonyOS 3.1Beta1暂不支持。
需要权限: ohos.permission.DISTRIBUTED_DATASYNC。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceIds  | string[]  | 是  | 同一组网环境下,需要同步的设备的deviceId列表。  | 
mode  | 是  | 同步模式。  | |
delayMs  | number  | 否  | 可选参数,允许延时时间,单位:ms(毫秒)。  | 
示例:
let kvStore;
kvStore.sync(['deviceIds'], distributedData.SyncMode.PULL_ONLY, 1000);
on('dataChange')8+
on(event: 'dataChange', type: SubscribeType, listener: Callback<ChangeNotification>): void
订阅指定类型的数据变更通知。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
event  | string  | 是  | 订阅的事件名,固定为'dataChange',表示数据变更事件。  | 
type  | 是  | 表示订阅的类型。  | |
listener  | Callback<ChangeNotification>  | 是  | 回调函数。  | 
示例:
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
    console.log("dataChange callback call data: " + JSON.stringify(data));
});
on('syncComplete')8+
on(event: 'syncComplete', syncCallback: Callback<Array<[string, number]>>): void
订阅同步完成事件回调通知。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
event  | string  | 是  | 订阅的事件名,固定为'syncComplete',表示同步完成事件。  | 
syncCallback  | Callback<Array<[string, number]>>  | 是  | 回调函数。用于向调用方发送同步结果的回调。  | 
示例:
let kvStore;
const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
const VALUE_TEST_FLOAT_ELEMENT = 321.12;
try {
    kvStore.on('syncComplete', function (data) {
        console.log('syncComplete ' + data)
    });
    kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => {
        console.log('syncComplete put success');
    }).catch((error) => {
        console.log('syncComplete put fail ' + error);
    });
}catch(e) {
    console.log('syncComplete put e ' + e);
}
off('dataChange')8+
off(event:'dataChange', listener?: Callback<ChangeNotification>): void
取消订阅数据变更通知。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
event  | string  | 是  | 取消订阅的事件名,固定为'dataChange',表示数据变更事件。  | 
listener  | Callback<ChangeNotification>  | 否  | 回调函数。  | 
示例:
let kvStore;
class KvstoreModel {
    call(data) {
        console.log("dataChange: " + data);
    }
    subscribeDataChange() {
        if (kvStore != null) {
            kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
        }
    }
    unsubscribeDataChange() {
        if (kvStore != null) {
            kvStore.off('dataChange', this.call);
        }
    }
}
off('syncComplete')8+
off(event: 'syncComplete', syncCallback?: Callback<Array<[string, number]>>): void
取消订阅同步完成事件回调通知。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
event  | string  | 是  | 取消订阅的事件名,固定为'syncComplete',表示同步完成事件。  | 
syncCallback  | Callback<Array<[string, number]>>  | 否  | 回调函数。用于向调用方发送同步结果的回调。  | 
示例:
let kvStore;
class KvstoreModel {
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
        }
    }
    unsubscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
        }
    }
}
setSyncParam8+
setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback<void>): void
设置数据库同步允许的默认延迟,使用callback异步回调。
此接口能力在HarmonyOS 3.1Beta1暂不支持。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
defaultAllowedDelayMs  | number  | 是  | 表示数据库同步允许的默认延迟,以毫秒为单位。  | 
callback  | AsyncCallback<void>  | 是  | 回调函数。  | 
示例:
let kvStore;
try {
    const defaultAllowedDelayMs = 500;
    kvStore.setSyncParam(defaultAllowedDelayMs, function (err,data) {
        console.log('SetSyncParam put success');
    });
}catch(e) {
    console.log('testSingleKvStoreSetSyncParam e ' + e);
}
setSyncParam8+
setSyncParam(defaultAllowedDelayMs: number): Promise<void>
设置数据库同步允许的默认延迟,使用Promise异步回调。
此接口能力在HarmonyOS 3.1Beta1暂不支持。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
defaultAllowedDelayMs  | number  | 是  | 表示数据库同步允许的默认延迟,以毫秒为单位。  | 
返回值:
类型  | 说明  | 
Promise<void>  | 无返回结果的Promise对象。  | 
示例:
let kvStore;
try {
    const defaultAllowedDelayMs = 500;
    kvStore.setSyncParam(defaultAllowedDelayMs).then((err) => {
        console.log('SetSyncParam put success');
    }).catch((err) => {
        console.log('SetSyncParam put fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('SetSyncParam e ' + e);
}
getSecurityLevel8+
getSecurityLevel(callback: AsyncCallback<SecurityLevel>): void
获取数据库的安全级别,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
callback  | AsyncCallback<SecurityLevel>  | 是  | 回调函数。返回数据库的安全级别。  | 
示例:
let kvStore;
try {
    kvStore.getSecurityLevel(function (err,data) {
        console.log('getSecurityLevel success');
    });
}catch(e) {
    console.log('GetSecurityLevel e ' + e);
}
getSecurityLevel8+
getSecurityLevel(): Promise<SecurityLevel>
获取数据库的安全级别,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
返回值:
类型  | 说明  | 
Promise<SecurityLevel>  | Promise对象。返回数据库的安全级别。  | 
示例:
let kvStore;
try {
    kvStore.getSecurityLevel().then((data) => {
        console.log(' getSecurityLevel success');
    }).catch((err) => {
        console.log('getSecurityLevel fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetSecurityLevel e ' + e);
}
DeviceKVStore8+
设备协同数据库,继承自KVStore,提供查询数据和同步数据的方法。
设备协同数据库,以设备维度对数据进行区分,每台设备仅能写入和修改本设备的数据,其它设备的数据对其是只读的,无法修改其它设备的数据。
比如,可以使用设备协同数据库实现设备间的图片分享,可以查看其他设备的图片,但无法修改和删除其他设备的图片。
在调用DeviceKVStore的方法前,需要先通过getKVStore构建一个DeviceKVStore实例。
get8+
get(deviceId: string, key: string, callback: AsyncCallback<boolean|string|number|Uint8Array>): void
获取与指定设备ID和key匹配的string值,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | 标识要查询其数据的设备。  | 
key  | string  | 是  | 表示要查询key值的键。  | 
callback  | AsyncCallback<boolean|string|number|Uint8Array>  | 是  | 回调函数,返回匹配给定条件的字符串值。  | 
示例:
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
try{
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err,data) {
        console.log('put success');
        kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, function (err,data) {
            console.log('get success');
        });
    })
}catch(e) {
    console.log('get e' + e);
}
get8+
get(deviceId: string, key: string): Promise<boolean|string|number|Uint8Array>
获取与指定设备ID和key匹配的string值,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | 标识要查询其数据的设备。  | 
key  | string  | 是  | 表示要查询key值的键。  | 
返回值:
类型  | 说明  | 
Promise<boolean|string|number|Uint8Array>  | Promise对象。返回匹配给定条件的字符串值。  | 
示例:
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(async (data) => {
        console.log(' put success');
        kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
            console.log('get success');
        }).catch((err) => {
            console.log('get fail ' + JSON.stringify(err));
        });
    }).catch((error) => {
        console.log('put error' + error);
    });
} catch (e) {
    console.log('Get e ' + e);
}
getEntries8+
getEntries(deviceId: string, keyPrefix: string, callback: AsyncCallback<Entry[]>): void
获取与指定设备ID和key前缀匹配的所有键值对,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | 标识要查询其数据的设备。  | 
keyPrefix  | string  | 是  | 表示要匹配的键前缀。  | 
callback  | AsyncCallback<Entry[]>  | 是  | 回调函数,返回满足给定条件的所有键值对的列表。  | 
示例:
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        kvStore.getEntries('localDeviceId', 'batch_test_string_key', function (err,entries) {
            console.log('getEntries success');
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
        });
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
getEntries8+
getEntries(deviceId: string, keyPrefix: string): Promise<Entry[]>
获取与指定设备ID和key前缀匹配的所有键值对,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | 标识要查询其数据的设备。  | 
keyPrefix  | string  | 是  | 表示要匹配的键前缀。  | 
返回值:
类型  | 说明  | 
Promise<Entry[]>  | Promise对象。返回匹配给定条件的所有键值对的列表。  | 
示例:
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entries) => {
            console.log('getEntries success');
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
            console.log('entries[0].value: ' + JSON.stringify(entries[0].value));
            console.log('entries[0].value.value: ' + entries[0].value.value);
        }).catch((err) => {
            console.log('getEntries fail ' + JSON.stringify(err));
        });
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
getEntries8+
getEntries(query: Query, callback: AsyncCallback<Entry[]>): void
获取与指定Query对象匹配的键值对列表,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
query  | Query  | 是  | 表示查询对象。  | 
callback  | AsyncCallback<Entry[]>  | 是  | 回调函数,返回与指定Query对象匹配的键值对列表。  | 
示例:
let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        kvStore.getEntries(query, function (err,entries) {
            console.log('getEntries success');
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
getEntries8+
getEntries(query: Query): Promise<Entry[]>
获取与指定Query对象匹配的键值对列表,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
query  | Query  | 是  | 表示查询对象。  | 
返回值:
类型  | 说明  | 
Promise<Entry[]>  | Promise对象。返回与指定Query对象匹配的键值对列表。  | 
示例:
let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        kvStore.getEntries(query).then((entries) => {
            console.log('getEntries success');
        }).catch((err) => {
            console.log('getEntries fail ' + JSON.stringify(err));
        });
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
getEntries8+
getEntries(deviceId: string, query: Query, callback: AsyncCallback<Entry[]>): void
获取与指定设备ID和Query对象匹配的键值对列表,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | 键值对所属的设备ID。  | 
query  | Query  | 是  | 表示查询对象。  | 
callback  | AsyncCallback<Entry[]>  | 是  | 回调函数。返回与指定设备ID和Query对象匹配的键值对列表。  | 
示例:
let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        var query = new distributedData.Query();
        query.deviceId('localDeviceId');
        query.prefixKey("batch_test");
        kvStore.getEntries('localDeviceId', query, function (err,entries) {
            console.log('getEntries success');
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
        })
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
getEntries8+
getEntries(deviceId: string, query: Query): Promise<Entry[]>
获取与指定设备ID和Query对象匹配的键值对列表,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | 键值对所属的设备ID。  | 
query  | Query  | 是  | 表示查询对象。  | 
返回值:
类型  | 说明  | 
Promise<Entry[]>  | Promise对象。返回与指定设备ID和Query对象匹配的键值对列表。  | 
示例:
let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        var query = new distributedData.Query();
        query.deviceId('localDeviceId');
        query.prefixKey("batch_test");
        kvStore.getEntries('localDeviceId', query).then((entries) => {
            console.log('getEntries success');
        }).catch((err) => {
            console.log('getEntries fail ' + JSON.stringify(err));
        });
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
getResultSet8+
getResultSet(deviceId: string, keyPrefix: string, callback: AsyncCallback<KvStoreResultSet>): void
获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | 标识要查询其数据的设备。  | 
keyPrefix  | string  | 是  | 表示要匹配的键前缀。  | 
callback  | AsyncCallback<KvStoreResultSet>  | 是  | 回调函数。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。  | 
示例:
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) {
        console.log('getResultSet succeed.');
        resultSet = result;
        kvStore.closeResultSet(resultSet, function (err, data) {
            console.log('closeResultSet success');
        })
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
getResultSet8+
getResultSet(deviceId: string, keyPrefix: string): Promise<KvStoreResultSet>
获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | 标识要查询其数据的设备。  | 
keyPrefix  | string  | 是  | 表示要匹配的键前缀。  | 
返回值:
类型  | 说明  | 
Promise<KvStoreResultSet>  | Promise对象。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。  | 
示例:
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => {
        console.log('getResultSet succeed.');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet failed: ' + JSON.stringify(err));
    });
    kvStore.closeResultSet(resultSet).then((err) => {
        console.log('closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
getResultSet8+
getResultSet(query: Query, callback: AsyncCallback<KvStoreResultSet>): void
获取与指定Query对象匹配的KvStoreResultSet对象,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
query  | Query  | 是  | 表示查询对象。  | 
callback  | AsyncCallback<KvStoreResultSet>  | 是  | 回调函数,返回与指定Query对象匹配的KvStoreResultSet对象。  | 
示例:
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        kvStore.getResultSet(query, async function (err, result) {
            console.log('getResultSet succeed.');
            resultSet = result;
            kvStore.closeResultSet(resultSet, function (err, data) {
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
getResultSet8+
getResultSet(query: Query): Promise<KvStoreResultSet>
获取与指定Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
query  | Query  | 是  | 表示查询对象。  | 
返回值:
类型  | 说明  | 
Promise<KvStoreResultSet>  | Promise对象。返回与指定Query对象匹配的KvStoreResultSet对象。  | 
示例:
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + err);
    });
    const query = new distributedData.Query();
    query.deviceId('localDeviceId');
    query.prefixKey("batch_test");
    console.log("GetResultSet " + query.getSqlLike());
    kvStore.getResultSet(query).then((result) => {
        console.log('getResultSet succeed.');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet failed: ' + JSON.stringify(err));
    });
    kvStore.closeResultSet(resultSet).then((err) => {
        console.log('closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
getResultSet8+
getResultSet(deviceId: string, query: Query, callback: AsyncCallback<KvStoreResultSet>): void
获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | KvStoreResultSet对象所属的设备ID。  | 
query  | Query  | 是  | 表示查询对象。  | 
callback  | AsyncCallback<KvStoreResultSet>  | 是  | 回调函数。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。  | 
示例:
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        kvStore.getResultSet('localDeviceId', query, async function (err, result) {
            console.log('getResultSet succeed.');
            resultSet = result;
            kvStore.closeResultSet(resultSet, function (err, data) {
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
getResultSet8+
getResultSet(deviceId: string, query: Query): Promise<KvStoreResultSet>
获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | KvStoreResultSet对象所属的设备ID。  | 
query  | Query  | 是  | 表示查询对象。  | 
返回值:
类型  | 说明  | 
Promise<KvStoreResultSet>  | Promise对象。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。  | 
示例:
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries).then(async (err) => {
        console.log('GetResultSet putBatch success');
    }).catch((err) => {
        console.log('PutBatch putBatch fail ' + JSON.stringify(err));
    });
    const query = new distributedData.Query();
    query.prefixKey("batch_test");
    kvStore.getResultSet('localDeviceId', query).then((result) => {
        console.log('GetResultSet getResultSet succeed.');
        resultSet = result;
    }).catch((err) => {
        console.log('GetResultSet getResultSet failed: ' + JSON.stringify(err));
    });
    query.deviceId('localDeviceId');
    console.log("GetResultSet " + query.getSqlLike());
    kvStore.closeResultSet(resultSet).then((err) => {
        console.log('GetResultSet closeResultSet success');
    }).catch((err) => {
        console.log('GetResultSet closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
closeResultSet8+
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback<void>): void
关闭由DeviceKVStore.getResultSet返回的KvStoreResultSet对象,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
resultSet  | 是  | 指示要关闭的KvStoreResultSet对象。  | |
callback  | AsyncCallback<void>  | 是  | 回调函数。  | 
示例:
let kvStore;
try {
    console.log('CloseResultSet success');
    let resultSet = null;
    kvStore.closeResultSet(resultSet, function (err, data) {
        if (err == undefined) {
            console.log('closeResultSet success');
        } else {
            console.log('closeResultSet fail');
        }
    });
}catch(e) {
    console.log('CloseResultSet e ' + e);
}
closeResultSet8+
closeResultSet(resultSet: KvStoreResultSet): Promise<void>
关闭由DeviceKVStore.getResultSet返回的KvStoreResultSet对象,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
resultSet  | 是  | 指示要关闭的KvStoreResultSet对象。  | 
返回值:
类型  | 说明  | 
Promise<void>  | 无返回结果的Promise对象。  | 
示例:
let kvStore;
try {
    console.log('CloseResultSet success');
    let resultSet = null;
    kvStore.closeResultSet(resultSet).then(() => {
        console.log('closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('CloseResultSet e ' + e);
}
getResultSize8+
getResultSize(query: Query, callback: AsyncCallback<number>): void
获取与指定Query对象匹配的结果数,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
query  | Query  | 是  | 表示查询对象。  | 
callback  | AsyncCallback<number>  | 是  | 回调函数,返回与指定Query对象匹配的结果数。  | 
示例:
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        kvStore.getResultSize(query, async function (err, resultSize) {
            console.log('getResultSet succeed.');
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
getResultSize8+
getResultSize(query: Query): Promise<number>
获取与指定Query对象匹配的结果数,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
query  | Query  | 是  | 表示查询对象。  | 
返回值:
类型  | 说明  | 
Promise<number>  | Promise对象。返回与指定Query对象匹配的结果数。  | 
示例:
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    const query = new distributedData.Query();
    query.prefixKey("batch_test");
    query.deviceId('localDeviceId');
    kvStore.getResultSize(query).then((resultSize) => {
        console.log('getResultSet succeed.');
    }).catch((err) => {
        console.log('getResultSet failed: ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
getResultSize8+
getResultSize(deviceId: string, query: Query, callback: AsyncCallback<number>): void;
获取与指定设备ID和Query对象匹配的结果数,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | KvStoreResultSet对象所属的设备ID。  | 
query  | Query  | 是  | 表示查询对象。  | 
callback  | AsyncCallback<number>  | 是  | 回调函数。返回与指定设备ID和Query对象匹配的结果数。  | 
示例:
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        kvStore.getResultSize('localDeviceId', query, async function (err, resultSize) {
            console.log('getResultSet succeed.');
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
getResultSize8+
getResultSize(deviceId: string, query: Query): Promise<number>
获取与指定设备ID和Query对象匹配的结果数,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | KvStoreResultSet对象所属的设备ID。  | 
query  | Query  | 是  | 表示查询对象。  | 
返回值:
类型  | 说明  | 
Promise<number>  | Promise对象。返回与指定设备ID和Query对象匹配的结果数。  | 
示例:
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    var query = new distributedData.Query();
    query.prefixKey("batch_test");
    kvStore.getResultSize('localDeviceId', query).then((resultSize) => {
        console.log('getResultSet succeed.');
    }).catch((err) => {
        console.log('getResultSet failed: ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
removeDeviceData8+
removeDeviceData(deviceId: string, callback: AsyncCallback<void>): void
从当前数据库中删除指定设备的数据,使用callback异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | 标识要删除其数据的设备。  | 
callback  | AsyncCallback<void>  | 是  | 回调函数。  | 
示例:
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err,data) {
        console.log('RemoveDeviceData  put success');
        const deviceid = 'no_exist_device_id';
        kvStore.removeDeviceData(deviceid, async function (err,data) {
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
                kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, async function (err,data) {
                    console.log('RemoveDeviceData get success');
                });
            }
        });
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
removeDeviceData8+
removeDeviceData(deviceId: string): Promise<void>
从当前数据库中删除指定设备的数据,使用Promise异步回调。
系统能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceId  | string  | 是  | 标识要删除其数据的设备。  | 
返回值:
类型  | 说明  | 
Promise<void>  | 无返回结果的Promise对象。  | 
示例:
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((err) => {
        console.log('RemoveDeviceData put success');
    }).catch((err) => {
        console.log('RemoveDeviceData put fail ' + JSON.stringify(err));
    });
    const deviceid = 'no_exist_device_id';
    kvStore.removeDeviceData(deviceid).then((err) => {
        console.log('removeDeviceData success');
    }).catch((err) => {
        console.log('removeDeviceData fail ' + JSON.stringify(err));
    });
    kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
        console.log('RemoveDeviceData get success data:' + data);
    }).catch((err) => {
        console.log('RemoveDeviceData get fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
sync8+
sync(deviceIds: string[], mode: SyncMode, delayMs?: number): void
在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见分布式数据服务概述。
此接口能力在HarmonyOS 3.1Beta1暂不支持。
需要权限: ohos.permission.DISTRIBUTED_DATASYNC。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
deviceIds  | string[]  | 是  | 需要同步DeviceKvStore数据库的设备ID列表。  | 
mode  | 是  | 同步模式。  | |
delayMs  | number  | 否  | 可选参数,允许延时时间,单位:ms(毫秒)。  | 
示例:
let kvStore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        kvStore.sync(devices, mode);
    });
}catch(e) {
    console.log('Sync e' + e);
}
on('dataChange')8+
on(event: 'dataChange', type: SubscribeType, listener: Callback<ChangeNotification>): void
订阅指定类型的数据变更通知。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
event  | string  | 是  | 订阅的事件名,固定为'dataChange',表示数据变更事件。  | 
type  | 是  | 表示订阅的类型。  | |
listener  | Callback<ChangeNotification>  | 是  | 回调函数。  | 
示例:
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
    console.log("dataChange callback call data: " + JSON.stringify(data));
});
on('syncComplete')8+
on(event: 'syncComplete', syncCallback: Callback<Array<[string, number]>>): void
订阅同步完成事件回调通知。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
event  | string  | 是  | 订阅的事件名,固定为'syncComplete',表示同步完成事件。  | 
syncCallback  | Callback<Array<[string, number]>>  | 是  | 回调函数。用于向调用方发送同步结果的回调。  | 
示例:
let kvStore;
const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
const VALUE_TEST_FLOAT_ELEMENT = 321.12;
try {
    kvStore.on('syncComplete', function (data) {
        console.log('syncComplete ' + data)
    });
    kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => {
        console.log('syncComplete put success');
    }).catch((error) => {
        console.log('syncComplete put fail ' + error);
    });
}catch(e) {
    console.log('syncComplete put e ' + e);
}
off('dataChange')8+
off(event:'dataChange', listener?: Callback<ChangeNotification>): void
取消订阅数据变更通知。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
event  | string  | 是  | 取消订阅的事件名,固定为'dataChange',表示数据变更事件。  | 
listener  | Callback<ChangeNotification>  | 否  | 回调函数。  | 
示例:
let kvStore;
class KvstoreModel {
    call(data) {
        console.log("dataChange: " + data);
    }
    subscribeDataChange() {
        if (kvStore != null) {
            kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
        }
    }
    unsubscribeDataChange() {
        if (kvStore != null) {
            kvStore.off('dataChange', this.call);
        }
    }
}
off('syncComplete')8+
off(event: 'syncComplete', syncCallback?: Callback<Array<[string, number]>>): void
取消订阅同步完成事件回调通知。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
参数:
参数名  | 类型  | 必填  | 说明  | 
event  | string  | 是  | 取消订阅的事件名,固定为'syncComplete',表示同步完成事件。  | 
syncCallback  | Callback<Array<[string, number]>>  | 否  | 回调函数。用于向调用方发送同步结果的回调。  | 
示例:
let kvStore;
class KvstoreModel {
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
        }
    }
    unsubscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
        }
    }
}
SyncMode
同步模式枚举。
系统能力: SystemCapability.DistributedDataManager.KVStore.Core
名称  | 值  | 说明  | 
PULL_ONLY  | 0  | 表示只能从远端拉取数据到本端。  | 
PUSH_ONLY  | 1  | 表示只能从本端推送数据到远端。  | 
PUSH_PULL  | 2  | 表示从本端推送数据到远端,然后从远端拉取数据到本端。  | 




















