保存应用数据

harmonyOS系统提供了四种数据存储方式

首选项

适用于对key-value结构的数据进行存取和持久化操作。

特点

  • key-value 数据接口
    Key是不重复的关键字,Value是数据值
  • 非关系型数据库
    不保证遵循ACID(Atomicity, Consistency, Isolation 以及Durability) 特性

注意点

  • 因首选项实例会加载到内存中,建议存储到数据不超过一万条
  • 数据中的key为string类型,要求非空且自负长度不超过80个字节
  • 当数据中的value为string类型时,运行为空,字符长度不超过8192

使用

导入preference模块

import dataPreferences from '@ohos.data.preferences';const PREFERENCES_NAME = 'myPreferences'; // 数据库表名字const KEY_APP_FONT_SIZE = 'appFontSize';// 首选项Key

获取preference实例

globalThis.getFontPreferences = (() => {// 获取首选项实例let preferences: Promise<dataPreferences.Preferences> = dataPreferences.getPreferences(context, PREFERENCES_NAME);return preferences;});

保存数据

 await preferences.put(KEY_APP_FONT_SIZE, fontSize);preferences.flush();

获取数据

let fontSize: number = 0;const preferences = await globalThis.getFontPreferences();fontSize = await preferences.get(KEY_APP_FONT_SIZE, fontSize);

是否包含指定的key

 preferences.has(KEY_APP_FONT_SIZE).then(async (isExist) => {Logger.info(TAG, 'preferences has changeFontSize is ' + isExist);}).catch((err) => {Logger.error(TAG, 'Has the value failed with err: ' + err); });

数据持久化

通过flush方法把应用数据保存到文件中,使得应用数据保存期限变长

preferences.flush();