> 技术文档 > 鸿蒙中的数据库操作与本地存储

鸿蒙中的数据库操作与本地存储


大家好,我是[晚风依旧似温柔],新人一枚,欢迎大家关注~

本文目录:

        • 前言
        • 概述:鸿蒙中的数据库操作
        • 使用 SQLite 存储数据
          • 1. 在鸿蒙中使用 SQLite 数据库
          • 2. 查询数据并显示
        • DataAbility 数据访问接口
          • 1. 使用 DataAbility 访问 SQLite 数据库
          • 2. 数据更新与删除
        • 代码示例:使用 SQLite 进行本地数据存储和查询
        • 总结
前言

在现代应用中,数据的存储和管理至关重要。特别是在移动设备和嵌入式系统中,本地数据存储和管理能够显著提升应用的性能和响应速度。鸿蒙操作系统(HarmonyOS)为开发者提供了强大的本地存储功能,可以通过 SQLite 数据库和 DataAbility 接口来实现本地数据的存储、查询和管理。

本文将详细介绍如何在鸿蒙中实现数据库操作与本地存储,包括以下内容:

  • 鸿蒙中的数据库操作:介绍 SQLite 数据库的使用以及 DataAbility 接口。
  • 使用 SQLite 存储数据:在鸿蒙应用中使用 SQLite 进行数据存储。
  • DataAbility 数据访问接口:使用 DataAbility 接口访问本地数据库。
  • 代码示例:演示如何使用 SQLite 进行本地数据存储和查询。
概述:鸿蒙中的数据库操作

在鸿蒙操作系统中,开发者可以使用SQLite数据库来进行本地存储。SQLite 是一种轻量级的嵌入式数据库,适用于存储较小的数据集。除了 SQLite,鸿蒙还提供了 DataAbility 接口,这是一种更加灵活和高效的方式,允许应用通过标准化接口访问本地数据库、文件、共享数据等资源。

通过使用 SQLiteDataAbility,开发者可以在鸿蒙应用中实现如下功能:

  1. 数据存储:将结构化数据存储在本地数据库中,便于快速访问。
  2. 数据查询与更新:支持复杂的查询、数据过滤、插入和更新操作。
  3. 数据共享:通过 DataAbility,支持跨应用共享数据。
使用 SQLite 存储数据

SQLite 是一种内嵌式数据库,不依赖于服务器,具有较低的系统开销,适合在移动设备中使用。鸿蒙提供了对 SQLite 的支持,开发者可以轻松实现数据库操作。

1. 在鸿蒙中使用 SQLite 数据库

在鸿蒙中,SQLite 的操作包括以下几个步骤:

  1. 创建数据库:使用 SQLite 创建数据库文件。
  2. 创建表:定义数据表的结构。
  3. 插入数据:向表中插入数据。
  4. 查询数据:从表中查询数据。
// 创建数据库const db = await sqlite.open({ path: \'/data/data/com.example.app/databases/mydb.db\' });// 创建表await db.execute(` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER NOT NULL )`);// 插入数据await db.execute(` INSERT INTO users (name, age) VALUES (\'Alice\', 25)`);// 查询数据const rows = await db.all(\'SELECT * FROM users\');console.log(rows);

在这个示例中,我们使用 SQLite 提供的 API 完成了以下操作:

  1. 使用 sqlite.open() 创建了一个数据库文件。
  2. 使用 db.execute() 创建了一个 users 表,并定义了三个字段:id(自增主键)、nameage
  3. 向表中插入了一条数据(Alice,25岁)。
  4. 查询了 users 表中的所有数据,并打印了查询结果。
2. 查询数据并显示
// 查询并显示数据const queryResults = await db.all(\'SELECT * FROM users\');queryResults.forEach((row) => { console.log(`User ID: ${row.id}, Name: ${row.name}, Age: ${row.age}`);});

在这里,db.all() 查询 users 表中的所有记录,forEach 循环用于显示每个用户的 ID、名字和年龄。

DataAbility 数据访问接口

DataAbility 是鸿蒙提供的跨应用数据访问接口,允许应用访问和管理本地存储的各种数据类型,包括 SQLite 数据库、SharedPreferences、文件系统等。

通过 DataAbility,我们可以通过标准化的 API 来操作本地数据库,而无需关心底层的存储细节。它不仅可以访问 SQLite 数据库,还能访问其他类型的存储资源。

1. 使用 DataAbility 访问 SQLite 数据库

通过 DataAbility 接口,可以在应用中访问 SQLite 数据库。以下是使用 DataAbility 进行数据库操作的基本步骤:

  1. 配置 DataAbility:首先需要配置并初始化 DataAbility。
  2. 执行操作:执行数据查询、插入、删除等操作。
import { DataAbilityHelper } from \'@ohos.data.ability\';// 获取 DataAbilityHelper 实例const dataAbilityHelper = DataAbilityHelper.createDataAbilityHelper(\'com.example.provider.UserProvider\');// 插入数据const values = { name: \'Bob\', age: 30};await dataAbilityHelper.insert(\'users\', values);// 查询数据const result = await dataAbilityHelper.query(\'users\', [\'id\', \'name\', \'age\'], null, null);result.forEach((item) => { console.log(`User ID: ${item.id}, Name: ${item.name}, Age: ${item.age}`);});

在这个例子中:

  • 使用 DataAbilityHelper.createDataAbilityHelper 创建 DataAbilityHelper 实例。
  • 使用 insert() 方法插入数据。
  • 使用 query() 方法从 users 表中查询数据。
2. 数据更新与删除
// 更新数据const updateValues = { name: \'Bob Updated\', age: 35};const whereClause = \'id = ?\';const whereArgs = [1]; // 更新 ID 为 1 的记录await dataAbilityHelper.update(\'users\', updateValues, whereClause, whereArgs);// 删除数据const deleteWhereClause = \'id = ?\';const deleteWhereArgs = [1];await dataAbilityHelper.delete(\'users\', deleteWhereClause, deleteWhereArgs);

在这个例子中:

  • 使用 update() 方法更新 users 表中的数据。
  • 使用 delete() 方法删除指定条件的记录。
代码示例:使用 SQLite 进行本地数据存储和查询

以下是一个完整的示例,展示了如何在鸿蒙应用中使用 SQLite 和 DataAbility 进行本地数据存储和查询。

// 通过 SQLite 操作数据库async function sqliteExample() { const db = await sqlite.open({ path: \'/data/data/com.example.app/databases/mydb.db\' }); // 创建表 await db.execute(` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER NOT NULL ) `); // 插入数据 await db.execute(` INSERT INTO users (name, age) VALUES (\'Alice\', 25) `); // 查询数据 const rows = await db.all(\'SELECT * FROM users\'); console.log(\'SQLite Data:\', rows);}// 通过 DataAbility 访问数据库async function dataAbilityExample() { const dataAbilityHelper = DataAbilityHelper.createDataAbilityHelper(\'com.example.provider.UserProvider\'); // 插入数据 const values = { name: \'Bob\', age: 30 }; await dataAbilityHelper.insert(\'users\', values); // 查询数据 const result = await dataAbilityHelper.query(\'users\', [\'id\', \'name\', \'age\'], null, null); console.log(\'DataAbility Data:\', result);}// 执行示例sqliteExample();dataAbilityExample();

在这个示例中,我们展示了如何通过 SQLiteDataAbility 两种方式实现本地数据存储和查询。

总结

在鸿蒙应用中,数据库操作和本地存储是核心的功能之一。通过 SQLiteDataAbility,开发者可以方便地实现数据的存储、查询和更新,从而提高应用的性能和用户体验。

  • SQLite:适合用于嵌入式应用中,提供了轻量级的数据库存储功能,可以有效地管理结构化数据。
  • DataAbility:鸿蒙提供的跨应用数据访问接口,支持多种数据类型的操作,包括 SQLite 数据库、文件系统和共享数据等。

通过合理使用这两种技术,开发者能够高效地在鸿蒙应用中进行本地数据存储、查询和管理,提升应用的功能和性能。

如果觉得有帮助,别忘了点个赞+关注支持一下~
喜欢记得关注,别让好内容被埋没~