自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DataAbility進(jìn)行數(shù)據(jù)庫(kù)操作的簡(jiǎn)單使用

系統(tǒng) OpenHarmony
數(shù)據(jù)的存放形式多樣,可以是數(shù)據(jù)庫(kù),也可以是磁盤上的文件。Data對(duì)外提供對(duì)數(shù)據(jù)的增、刪、改、查,以及打開文件等接口,這些接口的具體實(shí)現(xiàn)由開發(fā)者提供。

??想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??

??https://ost.51cto.com??

DataAbility介紹:

使用Data模板的Ability(以下簡(jiǎn)稱“Data”)有助于應(yīng)用管理其自身和其他應(yīng)用存儲(chǔ)數(shù)據(jù)的訪問(wèn),并提供與其他應(yīng)用共享數(shù)據(jù)的方法。Data既可用于同設(shè)備不同應(yīng)用的數(shù)據(jù)共享,也支持跨設(shè)備不同應(yīng)用的數(shù)據(jù)共享。

數(shù)據(jù)的存放形式多樣,可以是數(shù)據(jù)庫(kù),也可以是磁盤上的文件。Data對(duì)外提供對(duì)數(shù)據(jù)的增、刪、改、查,以及打開文件等接口,這些接口的具體實(shí)現(xiàn)由開發(fā)者提供。

效果展示:

介紹DataAbility的使用方法,對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的訪問(wèn)操作。

  1. 每次插入的數(shù)據(jù)為:id=自增長(zhǎng)主鍵;name=jack;age=23;salary=3456.0。
  2. 修改數(shù)據(jù):修改id為2的數(shù)據(jù),并把數(shù)據(jù)改為:name=rose;age=45;salary=1234.9。
  3. 刪除數(shù)據(jù):刪除id為1的那一條數(shù)據(jù)。
  4. 查詢數(shù)據(jù):查詢表中所有的數(shù)據(jù),并且分行顯示。

新建一個(gè)DataAbility

初始化數(shù)據(jù)庫(kù)操作

我們這里以關(guān)系型數(shù)據(jù)庫(kù)為例,在DataAbility的onStart方法里邊初始化數(shù)據(jù)庫(kù)、表和字段的相關(guān)操作:

對(duì)于關(guān)系型數(shù)據(jù)庫(kù)和對(duì)象型數(shù)據(jù)庫(kù)的基本操作,可以看這一篇文章:

https://ost.51cto.com/posts/10599。

// 數(shù)據(jù)庫(kù)操作類RdbStore
private RdbStore rdbStore;
// 表名稱
private final String TABLENAME = "student";
@Override
public void onStart(Intent intent) {
super.onStart(intent);
HiLog.info(LABEL_LOG, "DataAbility onStart");

initDatabase(this);
}
// 初始化數(shù)據(jù)庫(kù)
private void initDatabase(Context context){
StoreConfig config = StoreConfig.newDefaultConfig("Student.db");
RdbOpenCallback callback = new RdbOpenCallback() {
@Override
public void onCreate(RdbStore rdbStore) {
rdbStore.executeSql("create table if not exists " + TABLENAME + "(id integer primary key autoincrement, name text not null, age integer not null, salary real)");
}
@Override
public void onUpgrade(RdbStore rdbStore, int i, int i1) {
}
};
DatabaseHelper helper = new DatabaseHelper(context);
rdbStore = helper.getRdbStore(config, 1, callback);
}

實(shí)現(xiàn)DataAbility類內(nèi)部的增刪改查操作

在DataAbility提供對(duì)應(yīng)的增刪改查方法里,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的的增刪改查操作;這里我們使用的是關(guān)系型數(shù)據(jù)庫(kù)。

RdbStore進(jìn)行查詢、修改、刪除等操作時(shí),參數(shù)RdbPredicates需要由DataAbilityUtils類和DataAbilityPredicates對(duì)象轉(zhuǎn)換得來(lái)。

// 查詢數(shù)據(jù)
@Override
public ResultSet query(Uri uri, String[] columns, DataAbilityPredicates predicates) {
RdbPredicates rdbPredicates = DataAbilityUtils.createRdbPredicates(predicates, TABLENAME);
ResultSet resultSet = rdbStore.query(rdbPredicates, columns);
return resultSet;
}
// 插入數(shù)據(jù)
@Override
public int insert(Uri uri, ValuesBucket value) {
long res = rdbStore.insert(TABLENAME, value);
return (int)res;
}
// 刪除數(shù)據(jù)
@Override
public int delete(Uri uri, DataAbilityPredicates predicates) {
RdbPredicates rdbPredicates = DataAbilityUtils.createRdbPredicates(predicates, TABLENAME);
int res = rdbStore.delete(rdbPredicates);
return res;
}
// 修改數(shù)據(jù)
@Override
public int update(Uri uri, ValuesBucket value, DataAbilityPredicates predicates) {
RdbPredicates rdbPredicates = DataAbilityUtils.createRdbPredicates(predicates, TABLENAME);
int res = rdbStore.update(value, rdbPredicates);
return res;
}

URI介紹

Data的提供方和使用方都通過(guò)URI(Uniform Resource Identifier)來(lái)標(biāo)識(shí)一個(gè)具體的數(shù)據(jù),例如數(shù)據(jù)庫(kù)中的某個(gè)表或磁盤上的某個(gè)文件。HarmonyOS的URI仍基于URI通用標(biāo)準(zhǔn),格式如下:

  • scheme:協(xié)議方案名,固定為“dataability”,代表Data Ability所使用的協(xié)議類型。
  • authority:設(shè)備ID。如果為跨設(shè)備場(chǎng)景,則為目標(biāo)設(shè)備的ID;如果為本地設(shè)備場(chǎng)景,則不需要填寫。
  • path:資源的路徑信息,代表特定資源的位置信息。
  • query:查詢參數(shù)。
  • fragment:可以用于指示要訪問(wèn)的子資源。

URI示例:

  • 跨設(shè)備場(chǎng)景:dataability://device_id/com.domainname.dataability.persondata/person/10。
  • 本地設(shè)備:dataability:///com.domainname.dataability.persondata/person/10。

說(shuō)明

本地設(shè)備的“device_id”字段為空,因此在“dataability:”后面有三個(gè)“/”。

使用DataAbilityHelper對(duì)象調(diào)用DataAbility的增刪改查操作:

在slice里邊聲明全局變量DataAbilityHelper和Uri的對(duì)象,以便頁(yè)面進(jìn)行增刪改查的操作。

1、獲取Uri的值:

2、在slice的onStart方法初始化一個(gè)DataAbilityHelper和Uri對(duì)象。

注意:由于是對(duì)本機(jī)操作,本地設(shè)備的“device_id”字段為空,因此在“dataability:”后面有三個(gè)“/”。

// 訪問(wèn)DataAbility的唯一路徑
private Uri uri;
// DataAbility數(shù)據(jù)操作類
private DataAbilityHelper helper;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
helper = DataAbilityHelper.creator(this);
uri = Uri.parse("dataability:///com.example.myapplication.DataAbility");
}

新增數(shù)據(jù):

// 增加
private boolean addData(){
ValuesBucket bucket = new ValuesBucket();
bucket.putString("name", "jack");
bucket.putInteger("age", 23);
bucket.putDouble("salary", 3456.0);
try {
int rowNum = helper.insert(uri, bucket);
return rowNum > 0 ? true : false;
} catch (Exception e) {
}
return false;
}

刪除數(shù)據(jù):

// 刪除
private boolean deleteData(){
try {
DataAbilityPredicates predicates = new DataAbilityPredicates();
predicates.equalTo("id", 1);
int rowNum = helper.delete(uri,predicates);
return rowNum > 0 ? true : false;
} catch (Exception e) {
}
return false;
}

修改數(shù)據(jù):

// 修改
private boolean changeData(){
ValuesBucket bucket = new ValuesBucket();
bucket.putString("name", "rose");
bucket.putInteger("age", 45);
bucket.putDouble("salary", 1234.9);
try {
DataAbilityPredicates predicates = new DataAbilityPredicates();
predicates.equalTo("id", 2);
int rowNum = helper.update(uri, bucket, predicates);
return rowNum > 0 ? true : false;
} catch (Exception e) {
}
return false;
}

查詢數(shù)據(jù):

// 查詢
private ResultSet queryData(){
String[] strings = {
"id","name","age","salary"
};
DataAbilityPredicates predicates = new DataAbilityPredicates();
predicates.greaterThan("id", 0);
try {
ResultSet resultSet = helper.query(uri, strings, predicates);
return resultSet;
} catch (Exception e) {
}
return null;
}

總結(jié)

  1. DataAbility只是華為提供的同設(shè)備或不同設(shè)備之間的應(yīng)用進(jìn)行數(shù)據(jù)訪問(wèn)的接口,具體的數(shù)據(jù)持久化保存還是要依賴于數(shù)據(jù)庫(kù)或者其他文件類型。
  2. RdbPredicates需要由DataAbilityUtils類和DataAbilityPredicates對(duì)象轉(zhuǎn)換得來(lái)。
  3. Data的提供方和使用方都通過(guò)URI(Uniform Resource Identifier)來(lái)標(biāo)識(shí)一個(gè)具體的數(shù)據(jù),例如數(shù)據(jù)庫(kù)中的某個(gè)表或磁盤上的某個(gè)文件。
  4. 當(dāng)訪問(wèn)本機(jī)應(yīng)用的數(shù)據(jù)庫(kù)時(shí),本地設(shè)備的“device_id”字段為空,因此在“dataability:”后面有三個(gè)“/”。
  5. 在slice頁(yè)面調(diào)用DataAbilityHelper對(duì)象的接口進(jìn)行數(shù)據(jù)操作。

??想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2024-04-03 10:05:02

2021-07-29 14:03:35

鴻蒙HarmonyOS應(yīng)用

2011-05-25 00:00:00

數(shù)據(jù)庫(kù)設(shè)計(jì)

2011-03-17 13:23:08

數(shù)據(jù)導(dǎo)入導(dǎo)出

2011-03-01 16:30:55

Oracle

2009-07-16 14:46:48

jdbc statem

2009-08-25 16:36:16

C#進(jìn)行數(shù)據(jù)庫(kù)編程

2009-07-01 10:46:57

JSP程序JSP代碼

2025-01-26 00:00:35

2010-03-30 18:48:24

Oracle 學(xué)習(xí)

2011-12-30 09:03:59

MySQL數(shù)據(jù)庫(kù)

2010-11-19 13:28:13

2010-02-04 17:42:15

Android數(shù)據(jù)庫(kù)

2017-10-31 11:55:46

sklearn數(shù)據(jù)挖掘自動(dòng)化

2010-07-02 14:46:20

SQL Server數(shù)

2010-05-27 14:55:40

簡(jiǎn)單備份MySQL

2010-09-25 16:38:34

維護(hù)DHCP數(shù)據(jù)庫(kù)文件

2010-06-04 10:59:54

MySQL數(shù)據(jù)庫(kù)返回影

2017-02-16 08:41:09

數(shù)據(jù)Vlookup匹配

2024-08-01 13:12:57

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)