> 文档中心 > 【JAVA UI】HarmonyOS关系型数据增删改查

【JAVA UI】HarmonyOS关系型数据增删改查


 参考资料

参考资料如下

  1. 对象关系映射数据库开发指导
  2. 相关demo

项目配置

项目配置

在应用级(entry)的bulid.gradle的ohos添加如下代码,如图所示

compileOptions { annotationEnabled true    }

cke_1024.png

建立关系型数据对象

新建一个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 表明为tableNamepublic 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 {}

api讲解

数据库的创建

创建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布局绘画“插入数据”,“修改数据”,“删除数据”,“查询数据”,“显示数据结果”的五个按钮,代码和效果图如下

                    

cke_14305.png

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 刷新数据    }}

运行效果

1.gif

 

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