参考资料如下
项目配置
在应用级(entry)的bulid.gradle的ohos添加如下代码,如图所示
- compileOptions {
- annotationEnabled true
- }

建立关系型数据对象
新建一个User对象包含姓名(name),年龄(age),和表索引(UserId),并且表索引为自增长格式,User需要继承OrmObject的对象,并且在User添加Entity注解,标明标明,实现get,set和tostring的方法,代码如下
- package com.harmony.alliance.myapplication.model;
-
- import ohos.data.orm.OrmObject;
- import ohos.data.orm.annotation.Entity;
- import ohos.data.orm.annotation.PrimaryKey;
-
- @Entity(tableName = "user")//todo 表明为tableName
- public class User extends OrmObject {
- //todo 表的id为自增长,
- @PrimaryKey(autoGenerate = true)
- private Integer userId;
- //todo 表的用户名
- private String name;
- //todo 用户年龄
- private int age;
-
- public Integer getUserId() {
- return userId;
- }
-
- public void setUserId(Integer userId) {
- this.userId = userId;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- @Override
- public String toString() {
- return "User{" +
- "userId=" + userId +
- ", name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
- }
实现数据库表对象建立
新建抽象数据的对象(TestDatabase)继承OrmDatabase,在该对象添加Database的注解,实现entities和version两个参数,代码如下
- package com.harmony.alliance.myapplication.model;
- import ohos.data.orm.OrmDatabase;
- import ohos.data.orm.annotation.Database;
- /**
- * entities 关系型数据的对象
- * version 数据的版本
- */
- @Database(entities = {User.class}, version = 1)
- public abstract class TestDatabase extends OrmDatabase {
- }
数据库的创建
创建DatabaseHelper,然后获取到OrmContext,代码如下
- helper = new DatabaseHelper(this);
- context = helper.getOrmContext("Test", "Test.db", TestDatabase.class);
1、数据库插入
首先创建User的对象,设置姓名和年龄的属性
调用OrmContext的insert的方法,
如何判断是否插入成功,insert的方法返回一个boolean类型数据
如果返回true就代表他插入成功
如果返回false就代表插入失败
OrmContext的flush的方法,将数据刷新到数据库中,代码如下
- User user = new User();
- user.setAge(18);
- user.setName(QueryValue);
- System.err.println("###" + user.toString());
- boolean InsertFlag = context.insert(user);
- if (InsertFlag) {
- TextResult.setText("插入成功");
- } else {
- TextResult.setText("插入失败");
- }
- context.flush();//todo 刷新数据
2、数据库删除
创建删除的条件对象OrmPredicates
然后在调用OrmContext的delete的方法,
如何判断是否删除成功
他返回的类型是int类型数据,代表删除了几条数据
如果他删除的条数大于0代表删除成功
如果小于等于0代表删除失败
OrmContext的flush的方法,刷新表格数据,代码如下
- OrmPredicates DeleteData =
- context.where(User.class)//todo 哪一张表
- .equalTo("name", QueryValue);//todo 查询条件
- int deleteNum = context.delete(DeleteData);
- if (deleteNum > 0) {
- TextResult.setText("删除成功");
- } else {
- TextResult.setText("删除失败");
- }
- context.flush();
3、数据库修改
修改姓名为luck为happy
创建OrmPredicates的对象,
调用OrmContext的update的方法,
如何判断是否修改成功
update的方法返回一个int类型的数据
如果返回的数据大于0的时候,代表修改成功
如果返回的数据小于等于0的时候,代表修改失败
OrmContext的flush的方法,刷新表格数据,代码如下
- OrmPredicates update = context.where(User.class)//todo 查询表格
- .equalTo("name", QueryValue);//todo 查询条件
- ValuesBucket valuesBucket = new ValuesBucket();
- valuesBucket.putInteger("age", 31);
- valuesBucket.putString("name", "luck");
- int updateNum = context.update(update, valuesBucket);//todo 得到 修改结果
- if (updateNum > 0) {//todo 修改成功
- TextResult.setText("修改成功");
- } else {//todo 修改失败
- TextResult.setText("修改失败");
- }
- context.flush();// todo 刷新数据
4、数据库查询
查询数据
创建OrmPredicates的对象
调用OrmContext的query的方法,
如何得到数据?
OrmContext的query的方法返回数据集合,根据集合长度得到具体数据。代码如下
- OrmPredicates predicates = context.where(User.class);//todo 查询表
- predicates.equalTo("name", QueryValue);//todo 查询条件
- List
list = context.query(predicates);// todo 查询结果 - StringBuilder stringBuilder = new StringBuilder();
- if (list.size() > 0) {
- for (int i = 0; i < list.size(); i++) {
- stringBuilder.append(list.get(i).toString()).append("\n");
- }
- TextResult.setText(stringBuilder.toString());
- } else {
- TextResult.setText("暂无数据");
- }
xml代码
在xml布局绘画“插入数据”,“修改数据”,“删除数据”,“查询数据”,“显示数据结果”的五个按钮,代码和效果图如下
- <DirectionalLayout
- xmlns:ohos="http://schemas.huawei.com/res/ohos"
- ohos:height="match_parent"
- ohos:width="match_parent"
- ohos:alignment="horizontal_center"
- ohos:orientation="vertical">
-
- <Text
- ohos:id="$+id:Text_Insert"
- ohos:height="80vp"
- ohos:width="match_parent"
- ohos:text_alignment="center"
- ohos:layout_alignment="horizontal_center"
- ohos:text="插入数据"
- ohos:text_size="20vp"
- />
-
- <Text
- ohos:id="$+id:Text_Update"
- ohos:height="80vp"
- ohos:width="match_parent"
- ohos:text_alignment="center"
- ohos:background_element="#Ed6262"
- ohos:layout_alignment="horizontal_center"
- ohos:text="修改数据"
- ohos:text_size="20vp"
- />
-
- <Text
- ohos:id="$+id:Text_delete"
- ohos:height="80vp"
- ohos:width="match_parent"
- ohos:text_alignment="center"
- ohos:layout_alignment="horizontal_center"
- ohos:text="删除数据"
- ohos:text_size="20vp"
- />
- <Text
- ohos:id="$+id:Text_query"
- ohos:height="80vp"
- ohos:width="match_parent"
- ohos:text_alignment="center"
- ohos:background_element="#Ed6262"
- ohos:layout_alignment="horizontal_center"
- ohos:text="查询数据"
- ohos:text_size="20vp"
- />
- <Text
- ohos:id="$+id:Text_result"
- ohos:height="match_parent"
- ohos:width="match_parent"
- ohos:text_alignment="horizontal_center"
- ohos:layout_alignment="horizontal_center"
- ohos:text="数据升级"
- ohos:multiple_lines="true"
- ohos:text_size="20vp"
- />
- DirectionalLayout>

java按钮
在代码分别实现增删改查的逻辑实现,代码如下
- package com.harmony.alliance.myapplication.slice;
-
- import com.harmony.alliance.myapplication.ResourceTable;
- import com.harmony.alliance.myapplication.model.TestDatabase;
- import com.harmony.alliance.myapplication.model.User;
- import ohos.aafwk.ability.AbilitySlice;
- import ohos.aafwk.content.Intent;
- import ohos.agp.components.Component;
- import ohos.agp.components.Text;
- import ohos.data.DatabaseHelper;
- import ohos.data.orm.OrmContext;
- import ohos.data.orm.OrmPredicates;
- import ohos.data.rdb.ValuesBucket;
-
- import java.util.Date;
- import java.util.List;
-
- public class MainAbilitySlice extends AbilitySlice {
- private Text TextInsert, TextUpdate, TextDelete, TextQuery, TextResult;
- private DatabaseHelper helper;
- private OrmContext context;
- private String QueryValue = "luck";
-
- @Override
- public void onStart(Intent intent) {
- super.onStart(intent);
- super.setUIContent(ResourceTable.Layout_ability_main);
- TextInsert = (Text) findComponentById(ResourceTable.Id_Text_Insert);
- TextDelete = (Text) findComponentById(ResourceTable.Id_Text_delete);
- TextUpdate = (Text) findComponentById(ResourceTable.Id_Text_Update);
- TextQuery = (Text) findComponentById(ResourceTable.Id_Text_query);
- TextResult = (Text) findComponentById(ResourceTable.Id_Text_result);
- //todo OrmContext创建数据库
- helper = new DatabaseHelper(this);
- context = helper.getOrmContext("Test", "Test.db", TestDatabase.class);
-
- TextInsert.setClickedListener(new Component.ClickedListener() {
- @Override
- public void onClick(Component component) {
- InsertData();
- }
- });
-
- TextQuery.setClickedListener(new Component.ClickedListener() {
- @Override
- public void onClick(Component component) {
- QueryData();
- }
- });
-
- TextUpdate.setClickedListener(new Component.ClickedListener() {
- @Override
- public void onClick(Component component) {
- updateData();
- }
- });
- TextDelete.setClickedListener(new Component.ClickedListener() {
- @Override
- public void onClick(Component component) {
- DeleteData();
- }
- });
-
-
- }
-
- /**
- * 删除数据
- * 创建删除的条件对象OrmPredicates
- * 然后在调用OrmContext的delete的方法,
- * 如何判断是否删除成功
- *他返回的类型是int类型数据,代表删除了几条数据
- * 如果他删除的条数大于0代表删除成功
- * 如果小于等于0代表删除失败
- * OrmContext的flush的方法,刷新表格数据
- */
- private void DeleteData() {
- OrmPredicates DeleteData =
- context.where(User.class)//todo 哪一张表
- .equalTo("name", QueryValue);//todo 查询条件
- int deleteNum = context.delete(DeleteData);
- if (deleteNum > 0) {
- TextResult.setText("删除成功");
- } else {
- TextResult.setText("删除失败");
- }
- context.flush();
- }
-
- /**
- * 修改姓名为luck为happy
- * 创建OrmPredicates的对象,
- * 调用OrmContext的update的方法,
- * 如何判断是否修改成功
- * update的方法返回一个int类型的数据
- * 如果返回的数据大于0的时候,代表他修改成功
- * 如果返回的数据小于等于0的时候,代表他修改失败
- * OrmContext的flush的方法,刷新表格数据
- */
- private void updateData() {
- OrmPredicates update = context.where(User.class)//todo 查询表格
- .equalTo("name", QueryValue);//todo 查询条件
- ValuesBucket valuesBucket = new ValuesBucket();
- valuesBucket.putInteger("age", 31);
- if (QueryValue.equals("happy")) {
- valuesBucket.putString("name", "luck");
- } else {
- valuesBucket.putString("name", "happy");
- }
- int updateNum = context.update(update, valuesBucket);//todo 得到 修改结果
- if (updateNum > 0) {//todo 修改成功
- if (QueryValue.equals("happy")) {
- QueryValue = "luck";
- } else {
- QueryValue = "happy";
- }
- TextResult.setText("修改成功");
- } else {//todo 修改失败
- TextResult.setText("修改失败");
- }
- context.flush();// todo 刷新数据
- }
-
- /**
- * 查询数据
- * 创建OrmPredicates的对象
- * 调用OrmContext的query的方法,
- * 如何得到数据
- * OrmContext的query的方法返回数据集合,根据集合长度得到具体数据
- */
- private void QueryData() {
- OrmPredicates predicates = context.where(User.class);//todo 查询表
- predicates.equalTo("name", QueryValue);//todo 查询条件
- List
list = context.query(predicates);// todo 查询结果 - StringBuilder stringBuilder = new StringBuilder();
- if (list.size() > 0) {
- for (int i = 0; i < list.size(); i++) {
- stringBuilder.append(list.get(i).toString()).append("\n");
- }
- TextResult.setText(stringBuilder.toString());
- } else {
- TextResult.setText("暂无数据");
- }
- }
-
- /**
- * 插入数据
- * 首先创建User的对象,设置姓名和年龄的属性
- * 调用OrmContext的insert的方法,
- * 如何判断是否插入成功,insert的方法返回一个boolean类型数据
- * 如果返回true就代表他插入成功
- * 如果返回false就代表插入失败
- * OrmContext的flush的数据,将数据刷新到数据库中
- */
- public void InsertData() {
- User user = new User();
- user.setAge(18);
- user.setName(QueryValue);
- boolean InsertFlag = context.insert(user);
- if (InsertFlag) {
- TextResult.setText("插入成功");
- } else {
- TextResult.setText("插入失败");
- }
- context.flush();//todo 刷新数据
- }
-
- }
运行效果

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh