0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于SQLite的鸿蒙的关系型数据库使用

鸿蒙系统HarmonyOS 来源:linhy0614 作者:linhy0614 2021-01-20 11:48 次阅读

这篇我们就来介绍下鸿蒙系统的数据库如何使用 鸿蒙的关系型数据库是基于SQLite的实现,官方提供了关系型数据库实现和基于对象的关系型数据库两种数据库操作,本文会指导大家如何分别使用这两种数据库操作,来对数据库进行简单的CRUD操作。

关系型数据库

关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。HarmonyOS关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。运作机制如图:

pIYBAGAHp26AaK2FAAE3c435YvM771.png

1、创建数据库

//设置数据库为RdbStore.db

StoreConfig config = StoreConfig.newDefaultConfig(“RdbStore.db”);

DatabaseHelper helper = new DatabaseHelper(getContext());

RdbStore rdbStore = helper.getRdbStore(config, 1, new RdbOpenCallback() {

@Override

public void onCreate(RdbStore rdbStore) {

//创建表

rdbStore.executeSql(“create table if not exists User(userId integer primary key autoincrement,userName text)”);

//更多建表语句可以在这里写

}

@Override

public void onUpgrade(RdbStore rdbStore, int i, int i1) {

//升级数据库操作

}

});

2、插入数据

//使用键值对方式插入数据库rdbCreateDb()获取的就是创建的时候生成的rdbStore

ValuesBucket values = new ValuesBucket();

values.putInteger(“userId”,1);

values.putString(“userName”,“name1”);

long id = rdbCreateDb().insert(“User”,values);

//使用最原始的sql语句插入数据

rdbCreateDb().executeSql(“insert into User (userId,userName) values (2,‘name2’)”);

3、删除数据

RdbPredicates rdbPredicates = new RdbPredicates(“User”).equalTo(“userName”,“name1”);

int i = rdbCreateDb().delete(rdbPredicates);

4、查询数据

String[] columns = new String[]{“userId”,“userName”};

RdbPredicates rdbPredicates = new RdbPredicates(“User”);//构建查询谓词

ResultSet resultSet = rdbCreateDb().query(rdbPredicates,columns);

while (resultSet.goToNextRow()){

int userId = resultSet.getInt(resultSet.getColumnIndexForName(“userId”));

String userName = resultSet.getString(resultSet.getColumnIndexForName(“userName”));

HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, “===demo===”), “查询到userId=” + userId + “ userName=” +userName);

}

5、修改数据

RdbPredicates rdbPredicates = new RdbPredicates(“User”).equalTo(“userName”,“name2”);

ValuesBucket values = new ValuesBucket();

values.putString(“userName”,“name3”);

//更新数据

rdbCreateDb().update(values,rdbPredicates);

增删改查操作都可以通过rdbStore的executeSql方法,直接执行sql语句执行。语句语法采用SQLite的语法。

对象关系型数据库

HarmonyOS对象关系映射(Object Relational Mapping,ORM)数据库是一款基于SQLite的数据库框架,屏蔽了底层SQLite数据库的SQL操作,针对实体和关系提供了增删改查等一系列的面向对象接口。应用开发者不必再去编写复杂的SQL语句, 以操作对象的形式来操作数据库,提升效率的同时也能聚焦于业务开发。运作机制如图:

pIYBAGAHp4eAPmPbAAF9qY8AI7o439.png

1、环境配置

1、添加相应的jar包到模块libs里面,相关文件可以在demo中找到。

o4YBAGAHp5OAbCljAAEDnn9HB8s659.png

2、在模块的build.gradle中的对应添加注解引用

//开启注解

ohos {

compileOptions {

annotationEnabled true

}

}

//添加注解处理引用

dependencies {

annotationProcessor files(“。/libs/orm_annotations_java.jar”, “。/libs/orm_annotations_processor_java.jar”)

}

2、初始化数据库配置

1、新建数据库实现类

//entities里放置的是表对应的javabean,version对应数据库版本

@Database(entities = {OrmUser.class}, version = 1)

public abstract class OrmDBTest extends OrmDatabase {

@Override

public RdbOpenCallback getHelper() {

return new RdbOpenCallback() {

@Override

public void onCreate(RdbStore rdbStore) {

//创建成功后执行操作

}

@Override

public void onUpgrade(RdbStore rdbStore, int oldVersion, int newVersion) {

//数据库升级需要执行的操作

}

};

}

}

2、新建表对应的JavaBean

//对应的数据库表名写在注解里,另外记得get/set要写齐全

@Entity(tableName = “OrmUser”)

public class OrmUser extends OrmObject {

@PrimaryKey(autoGenerate = true)

private int id;

private int userId;

private String userName;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public int getUserId() {

return userId;

}

public void setUserId(int userId) {

this.userId = userId;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

}

3、ORM对数据库的基本操作

1、创建数据库上下文操作对象

private OrmContext ormCreateDb() {

DatabaseHelper databaseHelper = new DatabaseHelper(getContext());

OrmContext ormContext = databaseHelper.getOrmContext(“OrmDBTest”, “OrmDBTest.db”, OrmDBTest.class);

return ormContext;

}

2、增

OrmUser ormUser = new OrmUser();

ormUser.setUserId(1);

ormUser.setUserName(“name1”);

boolean isSuccess = ormCreateDb().insert(ormUser);

ormCreateDb().flush();

3、查

//查询userId = 1的数据

OrmPredicates ormPredicates = ormCreateDb().where(OrmUser.class).equalTo(“userId”,“1”);

List《OrmUser》 ormUsers = ormCreateDb().query(ormPredicates);

4、改

//将查询出来的数据值修改后更新到数据库

OrmUser ormUser = ormQuery();

if (ormUser == null){

return;

}

ormUser.setUserName(“name2”);

ormCreateDb().update(ormUser);

ormCreateDb().flush();

5、删

//将查询出来的数据值从数据库中删除

OrmUser ormUser = ormQuery();

if (ormUser == null){

return;

}

ormCreateDb().delete(ormUser);

ormCreateDb().flush();

总结

数据库中连接池的最大数量是4个,同一时间只能支持一个写操作!对象关系型数据的数据库类型只支持基础数据类型及Date、Time、Timestamp、Calendar、Blob(二进制大对象)、Clob(字符大对象) 文中相关的代码在git:https://github.com/maolinnan/HarmonyosClass

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    762

    浏览量

    44117
  • 数据库
    +关注

    关注

    7

    文章

    3795

    浏览量

    64365
  • 关系型数据库

    关注

    0

    文章

    7

    浏览量

    2333
  • HarmonyOS
    +关注

    关注

    79

    文章

    1974

    浏览量

    30149
收藏 人收藏

    评论

    相关推荐

    有个excel数据表 想导入鸿蒙数据库,求sqlite数据使用文档?

    有个excel 数据表 想导入鸿蒙数据库, 求sqlite数据使用文档?
    发表于 06-09 10:10

    什么是关系数据库

    什么是关系数据库 关系数据库简介   关系
    发表于 06-17 07:38 9123次阅读

    什么是非关系数据库

    什么是非关系数据库 谈到非关系数据库设计的难点,朱海峰说:“我们可以从一些场景来看这个问题
    发表于 06-17 15:49 3131次阅读

    鸿蒙数据库知识点学习

    鸿蒙数据库知识点,了解了存储机制并且尝试了使用,发现鸿蒙数据库真的做到了应有尽有,操作还简单的地步。 鸿蒙
    的头像 发表于 09-06 09:34 3167次阅读

    怎么创建SQLite数据库

    大家好,今天给大家分享一篇如何创建SQLite数据库的文章。
    的头像 发表于 02-22 16:21 6003次阅读
    怎么创建<b class='flag-5'>SQLite</b><b class='flag-5'>数据库</b>

    OpenHarmony关系数据库概述

    关系数据库(Relational Database, 以下简称RDB)是一种基于关系模型来管理数据
    的头像 发表于 03-28 18:08 1044次阅读
    OpenHarmony<b class='flag-5'>关系</b><b class='flag-5'>型</b><b class='flag-5'>数据库</b>概述

    关系数据库的基本原理(什么是关系数据库

    什么是关系数据库关系数据库,简称 RDBMS是由许多
    的头像 发表于 07-10 09:06 1419次阅读

    SQLite数据库的特点 SQLite数据库简单介绍

    SQLite数据库的特点 SQLite数据库简单介绍 SQLite数据库是一种轻型的嵌入式
    的头像 发表于 08-28 16:40 5522次阅读

    如何创建一个Sqlite数据库

    如何创建一个Sqlite数据库Sqlite是一种轻量级、占用空间小、操作速度快的嵌入式数据库,使用它可以方便地存储和管理数据
    的头像 发表于 08-28 16:40 4452次阅读

    什么是Sqlite数据库

    什么是Sqlite数据库?  Sqlite数据库是一种轻量级的关系
    的头像 发表于 08-28 16:41 2553次阅读

    SQLite数据库能共享吗?

    SQLite数据库能共享吗? SQLite数据库是一种轻量级的数据库管理系统,它被广泛使用于移动应用、本地桌面应用以及小型Web应用中。
    的头像 发表于 08-28 16:41 2615次阅读

    SQLite数据库与python的区别

    SQLite数据库与python的区别 SQLite是一种轻量级关系数据库管理系统,是一个嵌入
    的头像 发表于 08-28 16:41 859次阅读

    SQLite数据库增删改查

    SQLite数据库增删改查  SQLite是一种轻量级的RDBMS(关系数据库管理系统),具有
    的头像 发表于 08-28 17:09 1204次阅读

    SQLite数据库文件头部特征

    SQLite数据库文件头部特征 SQLite是一种轻量级关系数据库管理系统,被广泛应用于移动设
    的头像 发表于 08-28 17:15 1061次阅读

    鸿蒙开发接口数据管理:【@ohos.data.rdb (关系数据库)】

    关系数据库(Relational Database,RDB)是一种基于关系模型来管理数据数据库
    的头像 发表于 06-10 18:35 1307次阅读