Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain

5.4 数据持久化方案

数据持久化是应用程序开发中的一个重要环节,用于在应用程序关闭后保存数据以供后续使用。在鸿蒙应用开发中,可以选择多种数据持久化方案,包括文件存储、Preferences、数据库(如SQLite)等。

5.4.1 文件存储

文件存储是最简单的数据持久化方式,适用于保存小型文件或配置数据。

示例:文件写入和读取

  1. 写入文件:
import fileio from '@ohos.fileio';

const filePath = '/data/accounts/account_0/appdata/example.txt';

fileio.writeFile(filePath, 'Hello HarmonyOS', (err) => {
  if (err) {
    console.error('文件写入失败', err);
  } else {
    console.info('文件写入成功');
  }
});
  1. 读取文件:
fileio.readFile(filePath, (err, data) => {
  if (err) {
    console.error('文件读取失败', err);
  } else {
    console.info('文件内容:', data.toString());
  }
});

5.4.2 Preferences

Preferences 是一种键值对存储方式,适合保存简单的配置信息。

示例:存储和读取数据

  1. 存储数据:
import preferences from '@ohos.data.preferences';

preferences.getPreferences('/data/accounts/account_0/appdata/config', (err, prefs) => {
  if (!err) {
    prefs.put('username', 'HarmonyUser');
    prefs.flush();
    console.info('配置保存成功');
  }
});
  1. 读取数据:
preferences.getPreferences('/data/accounts/account_0/appdata/config', (err, prefs) => {
  if (!err) {
    const username = prefs.get('username', '默认用户');
    console.info('读取的用户名:', username);
  }
});

5.4.3 数据库存储(SQLite)

对于复杂数据结构或需要执行查询的场景,可以使用 SQLite 数据库。

示例:数据库操作

  1. 创建数据库并插入数据:
import rdb from '@ohos.data.rdb';

const storeConfig = {
  name: 'example.db',
};
rdb.getRdbStore(storeConfig, 1, (err, store) => {
  if (!err) {
    const createTableSQL = 'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)';
    store.executeSql(createTableSQL, []);
    store.executeSql('INSERT INTO users (name) VALUES (?)', ['HarmonyUser']);
    console.info('数据插入成功');
  }
});
  1. 查询数据:
rdb.getRdbStore(storeConfig, 1, (err, store) => {
  if (!err) {
    store.querySql('SELECT * FROM users', [], (err, resultSet) => {
      if (!err) {
        while (resultSet.goToNextRow()) {
          console.info('用户 ID:', resultSet.getInt(0));
          console.info('用户名:', resultSet.getString(1));
        }
      }
    });
  }
});

5.4.4 小结

鸿蒙应用开发提供了灵活的持久化方案,开发者可以根据需求选择合适的方式:

  • 文件存储适用于简单文件的读写操作。
  • Preferences 提供方便的键值对存储。
  • SQLite 数据库适合复杂数据的管理与查询。
Last Updated:: 11/21/24, 10:47 AM