OpenHarmony之 eTS DataAbility 的使用及数据管理 原创 精华
OpenHarmony之 eTS DataAbility 的使用及数据管理
目录
1.介绍
本文是eTS DataAbility样例实践,主要展示了eTS FA使用 eTS DataAbility实现图书信息的管理功能,包括 rdb数据库的创建,数据的增删改查,批量操作等。是继 ServiceAbility 的第二篇。
Ability是HarmonyOS应用程序的重要组成部分,分为FA(Feature Ability)和PA(Particle Ability)两种类型。PA有 Service Ability和Data Ability,Service Ability模板用于提供后台运行任务的能力;Data Ability模板用于对外部提供统一的数据访问抽象。
Gitee 样例地址
https://gitee.com/openharmony/app_samples/tree/master/ability/DataAbility
大家也可以自行下载运行,但需要OpenHarmony的设备才能运行。
先来展示一下效果
2.代码讲解
项目结构图
2.1 PA端 DataAbility
1). data.ts 数据访问能力类
创建一个DataAbility很简单,就是File—New ----Ability—DataAbility,起个名字,
你可以按照数据类型命名,例如:GoodsDataAbility一个用来存储商品的DataAbility,需要注意的是,你命名的其实是个目录或者叫做路径,这个路径指向一个叫data.ts的文件,相应的代码编写也是在这个data.ts的文件。
一起来看一下实现一个DataAbility都需要做哪些事,
引入依赖
定义 rdb库对象、库配置、表名、创表SQL 等变量
接下来是功能函数的实现,这部分完全可以直接复用。
初始化库和表
增删改查 数据操作
2.2 FA端 MainAbility
1).model下的BookDataModel.ts 模型
创建一个BookModel 数据模型,定义一些属性字段 ,一个编号、一个名称、一个介绍。
还是在这个ts文件中,再编写一些方便展示的初始化测试数据的函数,export出去就可以直接调用了。这个地方需要注意的是自增ID不要写 。
再编写一个将resultSet数据转换位BookModel 数组的函数,用于处理DA_HELPER返回的数据。
2).model下的DaHelperConst.ts 常量类
定义一个DaHelperConst.ts 常量类,用于存储数据库常用属性。
首先引入FA访问类
定义数据访问URI、表列名、DataAbility帮助类 等常量
3).component下的bookView.ets
视图组件,实现了一个图书展示的列表效果。
定义 book数据模型对象、删除数据的回调函数
构建视图显示
效果图
4).component下的searchBar.ets
视图组件,实现了一个搜索栏的效果,使用了Stack 布局,让放大镜能叠加在文本输入框上。
用Text 模拟TextInput 效果,点击进行跳转到搜索界面。
效果图
5).component下的titleBar.ets
视图组件,实现了一个顶部标题栏的效果,提供了一个批量插入数据的操作按钮。
组件内定义回调函数的声明,在具体使用组件的界面在对回调函数进行实现,可以学习这种设计组件的方法。
6).page下的index.ets
index.ets是和用户完成交互的主要页面。
需要引入数据访问能力类、路由,前面定义的常量类、视图组件、数据模块类等。
通过DA_HELPER查询数据实现页面显示图书列表效果,实现删除和批量插入数据的效果。
build代码块,实现了列表显示的效果,使用了Stack布局,List等组件
点击行,跳转到更新数据界面,传递book对象过去,注意跳转的路由要在config.json配置好。
效果图
7).page下的query.ets
引入依赖和index.ets类似
查询数据
列表显示,和index.ets 类似,没有了删除按钮。
使用了ForEach、Stack、 TextInput 等组件, TextInput组件的onChange事件触发查询。
8).page下的update.ets
引入依赖
声明BookModel的变量,从router中接收携带的参数book对象,用于原信息的显示
使用DA_HELPER 更新数据,更新完返回列表界面。
显示要修改的图书信息,支持修改,支持返回、提交修改按钮。
使用了Scroll、Image、Text、TextInput等组件。
3.补充说明
1.我们发现并没有调用 DataAbility 的代码,那DataAbility 怎么被跑起来的呢?
其实是 DataAbility 是会被自动运行的,只要在config.json 中做了配置,当应用启动后,DataAbility就会被自动运行,在DataAbility完成初始化后,会调用声明周期回调函数 onInitialized,完成数据库的初始化。
看一下 DataAbility 在config.json 中的配置
启动应用,从日志输出中我们可以看到 DataAbility 被运行。
那DataAbility 数据的增删改查,也没有看到调用的代码呢?
代码里只是用了DA_HELPER对象来操作数据,并没有调用DataAbility/data.ts 的 insert/batchInsert/query/update/delete 这些函数,
其实是 DA_HELPER 在初始化时 绑定的 BASE_URI(如下) 和 config.json文件中 DataAbility 的uri 是一致的,可以看上面config.json 的配置中uri的值。
(注意 config.json中的 uri 只能是 “dataablity://xxxxxxxxx” ,两道杠 )。
有关BASE_URI格式说明参见下图,更详尽的参考
2.DataAbility/data.ts 中创表语句中的表名,注意要和TABLE_NAME常量保持一致,否则数据无法插入成功。
最后,
我们可以在这个基础上去扩展库、扩展表,去实现我们自己应用的数据管理。
这完成度感觉有点高,楼主厉害了
过一遍,就有收获