保存應用數據
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();