(十三)HarmonyOS ArkData 的数据插入与查询实战 原创

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

HarmonyOS ArkData 的数据插入与查询实战

在 HarmonyOS 应用开发的大环境下,高效的数据管理是打造优质应用的关键。ArkData 作为 HarmonyOS 数据管理的核心框架,为开发者提供了一整套强大的数据操作功能,数据的插入与查询便是其中极为重要的部分。通过灵活运用这些功能,开发者能够让应用快速响应数据请求,实现数据的动态展示与交互。本文将围绕 ArkData 中的数据插入与查询,介绍其 SQL 语句的使用,展示代码实现的具体过程,并结合实际场景给出案例,帮助开发者快速掌握这两项重要技能。

一、数据插入

1.1 SQL 语句基础

在 ArkData 的关系型数据库操作中,INSERT INTO语句是实现数据插入的核心。基本语法为INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)。这种语法不仅直观,而且能灵活地将数据插入指定的表和列中。

1.2 单条数据插入示例

下面通过一个简单的任务管理应用案例,展示如何在 ArkData 中使用INSERT INTO语句插入单条数据。假设我们已经创建了一个名为tasks的表,表结构包含id(自增长主键)、task和status字段。

​import ohos.data.relationalStore.RelationalStore;​

​import ohos.data.relationalStore.RelationalStoreConfig;​

​public class SingleDataInsertor {​

​public static void insertSingleTask() {​

​RelationalStoreConfig config = new RelationalStoreConfig("tasks.db", 1);​

​RelationalStore.getRelationalStore(config).thenAccept(store -> {​

​String insertSql = "INSERT INTO tasks (task, status) VALUES (?,?)";​

​Object[][] values = {{"完成会议纪要", "未完成"}};​

​store.executeSqlBatch(insertSql, values).thenAccept(result -> {​

​System.out.println("成功插入单条任务数据");​

​}).exceptionally(exception -> {​

​System.out.println("插入单条任务数据失败: " + exception.getMessage());​

​return null;​

​});​

​}).exceptionally(exception -> {​

​System.out.println("获取数据库失败: " + exception.getMessage());​

​return null;​

​});​

​}​

​}​

在上述代码中,executeSqlBatch方法接受 SQL 语句和数据值数组,实现数据的插入操作。之所以使用executeSqlBatch,是因为它同样适用于单条数据的插入,同时为批量插入数据提供了统一的接口。

1.3 批量数据插入

在实际开发中,批量插入数据的场景十分常见,比如导入大量用户数据或初始化数据库。使用 ArkData 进行批量数据插入时,只需在executeSqlBatch方法中传入多条数据值。

​import ohos.data.relationalStore.RelationalStore;​

​import ohos.data.relationalStore.RelationalStoreConfig;​

​public class BatchDataInsertor {​

​public static void insertBatchTasks() {​

​RelationalStoreConfig config = new RelationalStoreConfig("tasks.db", 1);​

​RelationalStore.getRelationalStore(config).thenAccept(store -> {​

​String insertSql = "INSERT INTO tasks (task, status) VALUES (?,?)";​

​Object[][] values = {​

​{"整理项目资料", "未完成"},​

​{"与客户沟通", "未完成"},​

​{"撰写项目报告", "未完成"}​

​};​

​store.executeSqlBatch(insertSql, values).thenAccept(result -> {​

​System.out.println("成功批量插入任务数据");​

​}).exceptionally(exception -> {​

​System.out.println("批量插入任务数据失败: " + exception.getMessage());​

​return null;​

​});​

​}).exceptionally(exception -> {​

​System.out.println("获取数据库失败: " + exception.getMessage());​

​return null;​

​});​

​}​

​}​

这样,通过一次数据库操作就能插入多条数据,极大地提高了数据插入的效率。

二、数据查询

2.1 SQL 查询语句基础

在 ArkData 中,数据查询通过SELECT语句实现,基本语法为SELECT column1, column2, ... FROM table_name WHERE condition。通过灵活使用WHERE子句,开发者可以筛选出符合特定条件的数据。

2.2 查询所有数据

查询表中的所有数据是最基本的操作。以任务管理应用为例,查询tasks表中的所有任务。

​import ohos.data.relationalStore.RelationalStore;​

​import ohos.data.relationalStore.RelationalStoreConfig;​

​import ohos.data.resultset.ResultSet;​

​public class QueryAllTasks {​

​public static void queryAll() {​

​RelationalStoreConfig config = new RelationalStoreConfig("tasks.db", 1);​

​RelationalStore.getRelationalStore(config).thenAccept(store -> {​

​String querySql = "SELECT * FROM tasks";​

​store.executeSql(querySql).thenAccept(resultSet -> {​

​while (resultSet.goToNextRow()) {​

​int id = resultSet.getInt("id");​

​String task = resultSet.getString("task");​

​String status = resultSet.getString("status");​

​System.out.println("任务ID: " + id + ", 任务: " + task + ", 状态: " + status);​

​}​

​}).exceptionally(exception -> {​

​System.out.println("查询所有任务数据失败: " + exception.getMessage());​

​return null;​

​});​

​}).exceptionally(exception -> {​

​System.out.println("获取数据库失败: " + exception.getMessage());​

​return null;​

​});​

​}​

​}​

上述代码使用SELECT *查询tasks表中的所有字段,并通过ResultSet遍历结果集,输出每条任务的详细信息。

2.3 条件查询

实际应用中,更多时候需要根据特定条件查询数据。例如,查询状态为 “未完成” 的任务。

​import ohos.data.relationalStore.RelationalStore;​

​import ohos.data.relationalStore.RelationalStoreConfig;​

​import ohos.data.resultset.ResultSet;​

​public class QueryTasksByStatus {​

​public static void queryByStatus() {​

​RelationalStoreConfig config = new RelationalStoreConfig("tasks.db", 1);​

​RelationalStore.getRelationalStore(config).thenAccept(store -> {​

​String querySql = "SELECT * FROM tasks WHERE status =?";​

​Object[] values = {"未完成"};​

​store.executeSql(querySql, values).thenAccept(resultSet -> {​

​while (resultSet.goToNextRow()) {​

​int id = resultSet.getInt("id");​

​String task = resultSet.getString("task");​

​String status = resultSet.getString("status");​

​System.out.println("任务ID: " + id + ", 任务: " + task + ", 状态: " + status);​

​}​

​}).exceptionally(exception -> {​

​System.out.println("按状态查询任务数据失败: " + exception.getMessage());​

​return null;​

​});​

​}).exceptionally(exception -> {​

​System.out.println("获取数据库失败: " + exception.getMessage());​

​return null;​

​});​

​}​

​}​

在这段代码中,通过在SELECT语句中添加WHERE子句,并使用占位符传递参数,实现了按条件查询数据的功能。

三、总结

通过对 ArkData 数据插入与查询功能的介绍,开发者能够掌握使用 SQL 语句和代码实现数据操作的方法。这些操作是构建数据驱动型 HarmonyOS 应用的重要基础。在实际开发过程中,开发者需要根据具体的业务需求,灵活运用这些功能,优化数据操作的性能和效率,为用户打造流畅的应用体验。随着 HarmonyOS 生态的不断发展,ArkData 也将持续优化和扩展功能,为开发者提供更强大的数据管理工具。

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


回复
    相关推荐