91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于SQLite的鴻蒙的關(guān)系型數(shù)據(jù)庫(kù)使用

鴻蒙系統(tǒng)HarmonyOS ? 來(lái)源:linhy0614 ? 作者:linhy0614 ? 2021-01-20 11:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這篇我們就來(lái)介紹下鴻蒙系統(tǒng)的數(shù)據(jù)庫(kù)如何使用 鴻蒙的關(guān)系型數(shù)據(jù)庫(kù)是基于SQLite的實(shí)現(xiàn),官方提供了關(guān)系型數(shù)據(jù)庫(kù)實(shí)現(xiàn)和基于對(duì)象的關(guān)系型數(shù)據(jù)庫(kù)兩種數(shù)據(jù)庫(kù)操作,本文會(huì)指導(dǎo)大家如何分別使用這兩種數(shù)據(jù)庫(kù)操作,來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行簡(jiǎn)單的CRUD操作。

關(guān)系型數(shù)據(jù)庫(kù)

關(guān)系型數(shù)據(jù)庫(kù)(Relational Database,RDB)是一種基于關(guān)系模型來(lái)管理數(shù)據(jù)的數(shù)據(jù)庫(kù)。HarmonyOS關(guān)系型數(shù)據(jù)庫(kù)基于SQLite組件提供了一套完整的對(duì)本地?cái)?shù)據(jù)庫(kù)進(jìn)行管理的機(jī)制,對(duì)外提供了一系列的增、刪、改、查接口,也可以直接運(yùn)行用戶輸入的SQL語(yǔ)句來(lái)滿足復(fù)雜的場(chǎng)景需要。運(yùn)作機(jī)制如圖:

pIYBAGAHp26AaK2FAAE3c435YvM771.png

1、創(chuàng)建數(shù)據(jù)庫(kù)

//設(shè)置數(shù)據(jù)庫(kù)為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) {

//創(chuàng)建表

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

//更多建表語(yǔ)句可以在這里寫(xiě)

}

@Override

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

//升級(jí)數(shù)據(jù)庫(kù)操作

}

});

2、插入數(shù)據(jù)

//使用鍵值對(duì)方式插入數(shù)據(jù)庫(kù)rdbCreateDb()獲取的就是創(chuàng)建的時(shí)候生成的rdbStore

ValuesBucket values = new ValuesBucket();

values.putInteger(“userId”,1);

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

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

//使用最原始的sql語(yǔ)句插入數(shù)據(jù)

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

3、刪除數(shù)據(jù)

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

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

4、查詢數(shù)據(jù)

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

RdbPredicates rdbPredicates = new RdbPredicates(“User”);//構(gòu)建查詢謂詞

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、修改數(shù)據(jù)

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

ValuesBucket values = new ValuesBucket();

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

//更新數(shù)據(jù)

rdbCreateDb().update(values,rdbPredicates);

增刪改查操作都可以通過(guò)rdbStore的executeSql方法,直接執(zhí)行sql語(yǔ)句執(zhí)行。語(yǔ)句語(yǔ)法采用SQLite的語(yǔ)法。

對(duì)象關(guān)系型數(shù)據(jù)庫(kù)

HarmonyOS對(duì)象關(guān)系映射(Object Relational Mapping,ORM)數(shù)據(jù)庫(kù)是一款基于SQLite的數(shù)據(jù)庫(kù)框架,屏蔽了底層SQLite數(shù)據(jù)庫(kù)的SQL操作,針對(duì)實(shí)體和關(guān)系提供了增刪改查等一系列的面向?qū)ο蠼涌凇?yīng)用開(kāi)發(fā)者不必再去編寫(xiě)復(fù)雜的SQL語(yǔ)句, 以操作對(duì)象的形式來(lái)操作數(shù)據(jù)庫(kù),提升效率的同時(shí)也能聚焦于業(yè)務(wù)開(kāi)發(fā)。運(yùn)作機(jī)制如圖:

pIYBAGAHp4eAPmPbAAF9qY8AI7o439.png

1、環(huán)境配置

1、添加相應(yīng)的jar包到模塊libs里面,相關(guān)文件可以在demo中找到。

o4YBAGAHp5OAbCljAAEDnn9HB8s659.png

2、在模塊的build.gradle中的對(duì)應(yīng)添加注解引用

//開(kāi)啟注解

ohos {

compileOptions {

annotationEnabled true

}

}

//添加注解處理引用

dependencies {

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

}

2、初始化數(shù)據(jù)庫(kù)配置

1、新建數(shù)據(jù)庫(kù)實(shí)現(xiàn)類

//entities里放置的是表對(duì)應(yīng)的javabean,version對(duì)應(yīng)數(shù)據(jù)庫(kù)版本

@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) {

//創(chuàng)建成功后執(zhí)行操作

}

@Override

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

//數(shù)據(jù)庫(kù)升級(jí)需要執(zhí)行的操作

}

};

}

}

2、新建表對(duì)應(yīng)的JavaBean

//對(duì)應(yīng)的數(shù)據(jù)庫(kù)表名寫(xiě)在注解里,另外記得get/set要寫(xiě)齊全

@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對(duì)數(shù)據(jù)庫(kù)的基本操作

1、創(chuàng)建數(shù)據(jù)庫(kù)上下文操作對(duì)象

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的數(shù)據(jù)

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

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

4、改

//將查詢出來(lái)的數(shù)據(jù)值修改后更新到數(shù)據(jù)庫(kù)

OrmUser ormUser = ormQuery();

if (ormUser == null){

return;

}

ormUser.setUserName(“name2”);

ormCreateDb().update(ormUser);

ormCreateDb().flush();

5、刪

//將查詢出來(lái)的數(shù)據(jù)值從數(shù)據(jù)庫(kù)中刪除

OrmUser ormUser = ormQuery();

if (ormUser == null){

return;

}

ormCreateDb().delete(ormUser);

ormCreateDb().flush();

總結(jié)

數(shù)據(jù)庫(kù)中連接池的最大數(shù)量是4個(gè),同一時(shí)間只能支持一個(gè)寫(xiě)操作!對(duì)象關(guān)系型數(shù)據(jù)的數(shù)據(jù)庫(kù)類型只支持基礎(chǔ)數(shù)據(jù)類型及Date、Time、Timestamp、Calendar、Blob(二進(jìn)制大對(duì)象)、Clob(字符大對(duì)象) 文中相關(guān)的代碼在git:https://github.com/maolinnan/HarmonyosClass

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    783

    瀏覽量

    45185
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3929

    瀏覽量

    66304
  • 關(guān)系型數(shù)據(jù)庫(kù)

    關(guān)注

    0

    文章

    8

    瀏覽量

    2406
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2126

    瀏覽量

    33160
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    有個(gè)excel數(shù)據(jù)表 想導(dǎo)入鴻蒙數(shù)據(jù)庫(kù),求sqlite數(shù)據(jù)使用文檔?

    有個(gè)excel 數(shù)據(jù)表 想導(dǎo)入鴻蒙數(shù)據(jù)庫(kù), 求sqlite數(shù)據(jù)使用文檔?
    發(fā)表于 06-09 10:10

    什么是關(guān)系數(shù)據(jù)庫(kù)

    什么是關(guān)系數(shù)據(jù)庫(kù) 關(guān)系數(shù)據(jù)庫(kù)簡(jiǎn)介   關(guān)系
    發(fā)表于 06-17 07:38 ?9204次閱讀

    什么是非關(guān)系數(shù)據(jù)庫(kù)

    什么是非關(guān)系數(shù)據(jù)庫(kù) 談到非關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)的難點(diǎn),朱海峰說(shuō):“我們可以從一些場(chǎng)景來(lái)看這個(gè)問(wèn)題
    發(fā)表于 06-17 15:49 ?3236次閱讀

    鴻蒙數(shù)據(jù)庫(kù)知識(shí)點(diǎn)學(xué)習(xí)

    鴻蒙數(shù)據(jù)庫(kù)知識(shí)點(diǎn),了解了存儲(chǔ)機(jī)制并且嘗試了使用,發(fā)現(xiàn)鴻蒙數(shù)據(jù)庫(kù)真的做到了應(yīng)有盡有,操作還簡(jiǎn)單的地步。 鴻蒙
    的頭像 發(fā)表于 09-06 09:34 ?3557次閱讀

    OpenHarmony關(guān)系數(shù)據(jù)庫(kù)概述

    關(guān)系數(shù)據(jù)庫(kù)(Relational Database, 以下簡(jiǎn)稱RDB)是一種基于關(guān)系模型來(lái)管理數(shù)據(jù)數(shù)
    的頭像 發(fā)表于 03-28 18:08 ?1421次閱讀
    OpenHarmony<b class='flag-5'>關(guān)系</b><b class='flag-5'>型</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>概述

    關(guān)系數(shù)據(jù)庫(kù)的基本原理(什么是關(guān)系數(shù)據(jù)庫(kù)

    什么是關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù),簡(jiǎn)稱 RDBMS是由許多數(shù)
    的頭像 發(fā)表于 07-10 09:06 ?1750次閱讀

    SQLite數(shù)據(jù)庫(kù)的特點(diǎn) SQLite數(shù)據(jù)庫(kù)簡(jiǎn)單介紹

    SQLite數(shù)據(jù)庫(kù)的特點(diǎn) SQLite數(shù)據(jù)庫(kù)簡(jiǎn)單介紹 SQLite數(shù)據(jù)庫(kù)是一種輕型的嵌入式
    的頭像 發(fā)表于 08-28 16:40 ?6118次閱讀

    如何創(chuàng)建一個(gè)Sqlite數(shù)據(jù)庫(kù)

    如何創(chuàng)建一個(gè)Sqlite數(shù)據(jù)庫(kù)Sqlite是一種輕量級(jí)、占用空間小、操作速度快的嵌入式數(shù)據(jù)庫(kù),使用它可以方便地存儲(chǔ)和管理數(shù)據(jù)
    的頭像 發(fā)表于 08-28 16:40 ?4840次閱讀

    什么是Sqlite數(shù)據(jù)庫(kù)

    什么是Sqlite數(shù)據(jù)庫(kù)?? Sqlite數(shù)據(jù)庫(kù)是一種輕量級(jí)的關(guān)系
    的頭像 發(fā)表于 08-28 16:41 ?3147次閱讀

    SQLite數(shù)據(jù)庫(kù)能共享嗎?

    SQLite數(shù)據(jù)庫(kù)能共享嗎? SQLite數(shù)據(jù)庫(kù)是一種輕量級(jí)的數(shù)據(jù)庫(kù)管理系統(tǒng),它被廣泛使用于移動(dòng)應(yīng)用、本地桌面應(yīng)用以及小型Web應(yīng)用中。
    的頭像 發(fā)表于 08-28 16:41 ?3496次閱讀

    SQLite數(shù)據(jù)庫(kù)與python的區(qū)別

    SQLite數(shù)據(jù)庫(kù)與python的區(qū)別 SQLite是一種輕量級(jí)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),是一個(gè)嵌入
    的頭像 發(fā)表于 08-28 16:41 ?1175次閱讀

    SQLite數(shù)據(jù)庫(kù)增刪改查

    SQLite數(shù)據(jù)庫(kù)增刪改查? SQLite是一種輕量級(jí)的RDBMS(關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)),具有
    的頭像 發(fā)表于 08-28 17:09 ?1551次閱讀

    SQLite數(shù)據(jù)庫(kù)文件頭部特征

    SQLite數(shù)據(jù)庫(kù)文件頭部特征 SQLite是一種輕量級(jí)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),被廣泛應(yīng)用于移動(dòng)設(shè)
    的頭像 發(fā)表于 08-28 17:15 ?1387次閱讀

    鴻蒙開(kāi)發(fā)接口數(shù)據(jù)管理:【@ohos.data.rdb (關(guān)系數(shù)據(jù)庫(kù))】

    關(guān)系數(shù)據(jù)庫(kù)(Relational Database,RDB)是一種基于關(guān)系模型來(lái)管理數(shù)據(jù)數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 06-10 18:35 ?1981次閱讀

    關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系區(qū)別

    關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)在多個(gè)方面存在顯著差異,主機(jī)推薦小編為您整理發(fā)布
    的頭像 發(fā)表于 01-10 09:58 ?690次閱讀
    主站蜘蛛池模板: 天天碰人人| 在线观看免费观看 | 亚洲欧美色中文字幕 | 日本三级香港三级人妇 m | 欧美网站色 | 一区二区三区四区免费视频 | 丁香婷婷成人 | 日本亚洲成人 | 亚洲开心激情网 | 97人人草| 亚洲国产精品日韩专区avtube | 成人爽a毛片在线视频 | 精品福利在线观看 | 六月婷婷网视频在线观看 | 午夜三级国产精品理论三级 | 亚洲欧美天堂网 | 在线观看播放视频www | 妇少香港三日本三级视频 | 27pao强力打造高清免费高 | 色偷偷亚洲男人 | 天天狠天天天天透在线 | 制服丝袜中文字幕第一页 | 成 人 色综合 | 精品视频69v精品视频 | 国产福利萌白酱喷水视频铁牛 | 亚洲综合久久综合激情久久 | 欧美三级影院 | 狠狠色影院 | 88影视在线观看污污 | 天天射天天怕 | 天堂网www天堂在线网 | 日韩欧美不卡片 | 国产乱码免费卡1卡二卡3卡四 | 国产手机在线国内精品 | 亚洲精品久久久久午夜福 | 成年人黄色大片大全 | 四虎永久在线精品国产免费 | 免费人成黄页在线观看1024 | 欧美激情 在线 | 四大名著成人高h肉版 | 成人国产在线视频 |