购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.11 实战:使用DataAbilityHelper访问数据库

上一节演示了如何通过DataAbilityHelper类来访问当前应用的文件数据。本节将演示如何通过DataAbilityHelper类来访问当前应用的数据库数据。创建一个名为DataAbilityHelperAccessDatabase的应用作为演示。

下面介绍DataAbilityHelper具体的使用步骤。

5.11.1 创建DataAbility

在DevEco Studio中创建一个名为UserDataAbility的Data,如图5-24所示。

图5-24 创建一个名为UserDataAbility的Data

UserDataAbility初始化时代码如下:

UserDataAbility自动在配置文件中添加了相应的配置,内容如下:

从上述配置可以看出:

· type: 类型设置为data。

· uri: 对外提供的访问路径,全局唯一。

· permissions: 访问该Data Ability时需要申请的访问权限。

5.11.2 初始化数据库

HarmonyOS关系型数据库对外提供通用的操作接口,底层使用SQLite作为持久化存储引擎,支持SQLite具有的所有数据库特性,包括但不限于事务、索引、视图、触发器、外键、参数化查询和预编译SQL语句。

在上述代码中:

· 初始化了一个名为RdbStoreTest.db的数据库。

· 创建了一个名为user_t的表结构。该表包含user_id、user_name和user_age三个字段,其中user_id为主键。

· 初始化了RdbStore,用于方便处理后续关系型数据库(RDB)的管理。

5.11.3 重写query方法

重写UserDataAbility的query方法,代码如下:

上述代码中:

· DataAbilityUtils工具类将入参DataAbilityPredicates转为了RdbStore所能处理的RdbPredicates。

· 通过RdbStore查询所需要的字段。

5.11.4 重写insert方法

重写UserDataAbility的insert方法,代码如下:

上述代码中:

· 通过RdbStore插入表对应的数据。

· RdbStore插入数据后的返回值是该插入数据的主键,即user_id字段值。

5.11.5 重写update方法

重写UserDataAbility的update方法,代码如下:

上述代码中:

· DataAbilityUtils工具类将入参DataAbilityPredicates转为了RdbStore所能处理的RdbPredicates。

· 通过RdbStore更新了对应条件的数据。

· 更新后返回的value值代表更新的数量。

5.11.6 重写delete方法

重写UserDataAbility的delete方法,代码如下:

上述代码中:

· DataAbilityUtils工具类将入参DataAbilityPredicates转为了RdbStore所能处理的RdbPredicates。

· 通过RdbStore删除了对应条件的数据。

· 删除后返回的value值代表删除的数量。

5.11.7 修改MainAbilitySlice

修改MainAbilitySlice的onStart方法,代码如下:

在上述方法中,在Text中添加点击事件来触发访问数据库的操作。

doDatabaseAction方法用于执行数据库操作。借助DataAbilityHelper类的方法来访问当前UserDataAbility提供的数据库数据,分别执行了查询、插入、查询、更新、查询、删除和查询动作。

注:上述代码中访问的URI与UserDataAbility在配置数据库中添加的URI基本是一致的,唯一的区别是上述代码中访问的URI用3个斜杠。

5.11.8 运行

运行应用后,效果如图5-25所示。

点击“你好,世界”触发了访问数据库的操作,可以看到控制台HiLog输出内容如下:

图5-25 运行应用效果

从上述运行日志可以验证程序的运行。

· 首先执行查询,数据库的数据是空的。

· 接着插入一条用户数据,该数据的user_id是101。

· 再次查询,返回了user_id是101的用户数据,user_name是Way Lau,user_age是33。

· 执行了更新操作。

· 再次查询,可以看到user_id是101的用户数据,user_age被改为35。

· 执行了删除操作。

· 再次执行查询,数据库的数据是空的。 aLf5UPjkbCFxVuFYoWpQOJJdsfSTvzEnN2tJoiPS2n9ENHbZSqn3cDpnFBEKFDPy

点击中间区域
呼出菜单
上一章
目录
下一章
×