在应用级(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);
首先创建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 刷新数据
创建删除的条件对象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();
修改姓名为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 刷新数据
查询数据
创建OrmPredicates的对象
调用OrmContext的query的方法,
如何得到数据?
OrmContext的query的方法返回数据集合,根据集合长度得到具体数据。代码如下
OrmPredicates predicates = context.where(User.class);//todo 查询表 predicates.equalTo("name", QueryValue);//todo 查询条件 List<User> 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 version="1.0" encoding="utf-8"?> <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>
在代码分别实现增删改查的逻辑实现,代码如下
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<User> 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