偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

DataAbility進行數(shù)據(jù)庫操作的簡單使用

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

??想了解更多內(nèi)容,請訪問:??

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

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

DataAbility介紹:

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

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

效果展示:

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

  1. 每次插入的數(shù)據(jù)為:id=自增長主鍵;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ù),并且分行顯示。

新建一個DataAbility

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

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

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

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

// 數(shù)據(jù)庫操作類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ù)庫
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);
}

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

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

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

// 查詢數(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的提供方和使用方都通過URI(Uniform Resource Identifier)來標識一個具體的數(shù)據(jù),例如數(shù)據(jù)庫中的某個表或磁盤上的某個文件。HarmonyOS的URI仍基于URI通用標準,格式如下:

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

URI示例:

  • 跨設備場景:dataability://device_id/com.domainname.dataability.persondata/person/10。
  • 本地設備:dataability:///com.domainname.dataability.persondata/person/10。

說明

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

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

在slice里邊聲明全局變量DataAbilityHelper和Uri的對象,以便頁面進行增刪改查的操作。

1、獲取Uri的值:

2、在slice的onStart方法初始化一個DataAbilityHelper和Uri對象。

注意:由于是對本機操作,本地設備的“device_id”字段為空,因此在“dataability:”后面有三個“/”。

// 訪問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;
}

總結

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

??想了解更多內(nèi)容,請訪問:??

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

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

責任編輯:jianghua 來源: 鴻蒙社區(qū)
相關推薦

2024-04-03 10:05:02

2021-07-29 14:03:35

鴻蒙HarmonyOS應用

2011-05-25 00:00:00

數(shù)據(jù)庫設計

2011-03-17 13:23:08

數(shù)據(jù)導入導出

2011-03-01 16:30:55

Oracle

2009-07-16 14:46:48

jdbc statem

2009-08-25 16:36:16

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

2009-07-01 10:46:57

JSP程序JSP代碼

2025-01-26 00:00:35

2010-03-30 18:48:24

Oracle 學習

2011-12-30 09:03:59

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

2010-11-19 13:28:13

2017-10-31 11:55:46

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

2010-02-04 17:42:15

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

2010-07-02 14:46:20

SQL Server數(shù)

2017-02-16 08:41:09

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

2010-05-27 14:55:40

簡單備份MySQL

2010-09-25 16:38:34

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

2024-08-01 13:12:57

2010-06-04 10:59:54

MySQL數(shù)據(jù)庫返回影
點贊
收藏

51CTO技術棧公眾號