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

    文章

    737

    浏览量

    43449
  • 数据库
    +关注

    关注

    7

    文章

    3584

    浏览量

    63346
  • 关系型数据库

    关注

    0

    文章

    7

    浏览量

    2311
  • HarmonyOS
    +关注

    关注

    79

    文章

    1780

    浏览量

    29234
收藏 人收藏

    评论

    相关推荐

    labview连接sqlite3数据库

    labview利用“调用库函数节点”通过“动态链接(DLL)”操作sqlite3数据库创建数据库,创建表格,插入数据,查询等操作。这个程序
    发表于 07-19 16:04

    Wince系统基于数据库Sqlite的应用

    ` SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存
    发表于 07-18 11:31

    关于Lv与Sqlite数据库的通信

    有大神做过Lv与Sqlite数据库的通信吗?谢谢了
    发表于 06-22 22:01

    如何用labview创建SQLite数据库

    如何用labview创建SQLite数据库,谢谢
    发表于 01-22 17:19

    LabVIEW访问SQLite数据库接口研究

    【摘要】 本文介绍了LabVIEW环境下利用API技术访问开源数据库SQLite的方法,实现了可跨平台操作的数据库。采用此种方法完成了对过程控制中历史数据的保存、
    发表于 02-04 13:38

    关系数据库与非关系数据库的区别浅析

    关系数据库的一个劣势就是 阻抗失谐(impedance mismatch):关系模型和内存中的数据结构之间存在差异
    发表于 06-03 06:03

    嵌入式数据库sqlite移植及使用的资料分享

    嵌入式数据库sqlite移植及使用一、实验目的二.实验内容三.预备知识四.实验设备及工具(包括软件调试工具)五.实验步骤5.1 移植嵌入式数据库 sqlite一、实验目的理解嵌入式软件
    发表于 10-28 09:48

    Sqlite移动嵌入式数据库Sqlite的日常SQL操作语句是什么?

    Sqlite移动嵌入式数据库Sqlite的日常SQL操作语句是什么?
    发表于 12-27 07:37

    怎样使用Harmony Developer提供的关系数据库的相关API去读取sqlite文件内容呢

    Developer提供的关系数据库的相关API去读取之前放入的sqlite文件的内容,然后展示出来最后的效果如下:该demo中操作关系
    发表于 03-28 11:21

    LabView中SQLite数据库怎样做附加数据库操作?

    如题,labView操作SQLite数据库数据放在两个不同的文件中,想要将另外一个数文件附加到主
    发表于 05-03 23:41

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

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

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

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

    什么是Sqlite数据库

    什么是Sqlite数据库?  Sqlite数据库是一种轻量级的关系数据库管理系统。它被开源软件
    的头像 发表于 08-28 16:41 1472次阅读

    SQLite数据库与python的区别

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

    SQLite数据库增删改查

    SQLite数据库增删改查  SQLite是一种轻量级的RDBMS(关系数据库管理系统),具有速度快、易用性高等优点。虽然
    的头像 发表于 08-28 17:09 827次阅读