(三)HarmonyOS 中 ArkData 的数据存储方式剖析 原创

小_铁
发布于 2025-3-29 00:03
浏览
0收藏

HarmonyOS 中 ArkData 的数据存储方式剖析

在 HarmonyOS 开发领域,构建高效、稳定的应用离不开强大的数据存储解决方案。ArkData 作为 HarmonyOS 生态中数据管理的核心框架,提供了 Preferences(用户首选项)、KV-Store(键值型数据库)和 RelationalStore(关系型数据库)三种各具特色的数据存储方式。这些存储方式能满足不同场景下的数据存储需求,助力开发者打造功能全面、体验流畅的应用。本文将深入剖析这三种数据存储方式,并结合代码示例,帮助开发者更好地理解和应用。

Preferences:轻量级配置数据存储

Preferences 为开发者提供轻量级的配置数据持久化方案,适用于存储应用配置信息、用户偏好设置等少量数据。这类数据通常以文本形式保存在设备中,应用访问时会将文本数据全量加载到内存,这使得 Preferences 具备访问速度快、效率高的特点,但不适用于存储大量数据。

1. 写入数据

以下代码展示了如何通过 Preferences 记录用户的语言偏好:

​// 获取Preferences实例​

​const preferences = getPreferences(this, LocalStorageLevel.PRIVATE);​

​// 写入用户语言偏好数据​

​preferences.putSync('languagePreference', 'zh-CN');​

​preferences.flush();​

2. 读取数据

在应用启动时,可通过以下代码读取用户之前设置的语言偏好:

​const preferences = getPreferences(this, LocalStorageLevel.PRIVATE);​

​const language = preferences.get('languagePreference', 'en-US');​

​console.log(`用户语言偏好: ${language}`);​

KV-Store:键值对数据存储

KV-Store 以 “键值对” 的形式组织、索引和存储数据,是一种非关系型数据库。这种数据结构使得数据的存储和检索极为便捷,适合存储业务关系简单的数据。在分布式场景下,KV-Store 能降低数据库版本兼容和数据同步冲突解决的复杂度,更易于实现跨设备、跨版本兼容。

1. 创建 KV-Store 并进行数据操作

​import { distributedKVStore } from '@kit.ArkData';​

​import { BusinessError } from '@kit.BasicServicesKit';​

​let kvManager: distributedKVStore.KVManager | undefined = undefined;​

​let kvStore: distributedKVStore.SingleKVStore | undefined = undefined;​

​let context = getContext(this);​

​const kvManagerConfig: distributedKVStore.KVManagerConfig = {​

​context: context,​

​bundleName: 'com.example.datastoragetest'​

​};​

​try {​

​kvManager = distributedKVStore.createKVManager(kvManagerConfig);​

​console.info('成功创建KVManager');​

​} catch (e) {​

​let error = e as BusinessError;​

​console.error(`创建KVManager失败。错误码:${error.code}, 错误信息:${error.message}`);​

​}​

​if (kvManager!== undefined) {​

​kvManager = kvManager as distributedKVStore.KVManager;​

​const options: distributedKVStore.Options = {​

​createIfMissing: true,​

​encrypt: true​

​};​

​kvManager.getKVStore<distributedKVStore.SingleKVStore>('storeId', options, (err, store: distributedKVStore.SingleKVStore) => {​

​if (err) {​

​console.error(`获取KVStore失败。错误码:${err.code}, 错误信息:${err.message}`);​

​return;​

​}​

​console.info('成功获取KVStore');​

​kvStore = store;​

​// 写入数据​

​kvStore.put('username', 'testUser');​

​// 读取数据​

​const username = kvStore.get('username');​

​console.log(`用户名: ${username}`);​

​});​

​}​

RelationalStore:关系型数据存储

当处理复杂的关系型数据时,RelationalStore 是理想选择。它支持一系列增、删、改、查操作,开发者还能运行自定义 SQL 语句,满足复杂业务场景的需求。

1. 创建数据库并进行数据操作

下面以一个简单的任务管理应用为例,展示如何使用 RelationalStore 创建任务表,并进行数据的插入和查询操作。

​import { relationalStore } from '@ohos.data.relationalStore';​

​// 创建数据库配置​

​const config: relationalStore.RelationalStoreConfig = {​

​name: 'tasks.db',​

​version: 1​

​};​

​relationalStore.getRelationalStore(config).then((store) => {​

​// 创建任务表​

​const createTableSql = `CREATE TABLE IF NOT EXISTS tasks (id INTEGER PRIMARY KEY AUTOINCREMENT, task TEXT, status TEXT)`;​

​store.executeSql(createTableSql).then(() => {​

​console.info('成功创建任务表');​

​// 插入数据​

​const insertSql = `INSERT INTO tasks (task, status) VALUES (?,?)`;​

​const values = [['完成文档撰写', '未完成']];​

​store.executeSql(insertSql, values).then(() => {​

​console.info('成功插入数据');​

​// 查询数据​

​const querySql = `SELECT * FROM tasks`;​

​store.executeSql(querySql).then((resultSet) => {​

​const columnNames = resultSet.getColumnNames();​

​while (resultSet.goToNextRow()) {​

​for (const name of columnNames) {​

​console.log(`${name}: ${resultSet.getString(name)}`);​

​}​

​}​

​}).catch((error) => {​

​console.error(`查询数据失败: ${error.message}`);​

​});​

​}).catch((error) => {​

​console.error(`插入数据失败: ${error.message}`);​

​});​

​}).catch((error) => {​

​console.error(`创建任务表失败: ${error.message}`);​

​});​

​}).catch((error) => {​

​console.error(`获取关系型数据库失败: ${error.message}`);​

​});​

三种存储方式的选择策略

在实际开发中,选择合适的数据存储方式至关重要。当数据量较小且结构简单,如应用配置信息、用户偏好等,Preferences 是最佳选择;若数据关系简单,且需要在分布式场景下实现数据同步,KV-Store 更为合适;而处理复杂的关系型数据,以及需要进行复杂查询和事务处理时,RelationalStore 则是首选。

总结

Preferences、KV-Store 和 RelationalStore 作为 ArkData 提供的三种主要数据存储方式,各有优势,能够满足 HarmonyOS 应用开发中的各种数据存储需求。开发者通过深入理解和合理运用这些存储方式,能够提升应用的​​数据管理​​能力,为用户打造更加优质的应用体验。随着 HarmonyOS 生态的不断壮大,ArkData 也将持续优化,为开发者提供更多强大的工具和功能。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
    相关推荐