参考资料
参考资料如下
项目配置
项目配置
在应用级(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 {
}
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<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布局绘画“插入数据”,“修改数据”,“删除数据”,“查询数据”,“显示数据结果”的五个按钮,代码和效果图如下
<?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>
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<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
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/279485.html