成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DataAbility進行數據庫操作的簡單使用

系統 OpenHarmony
數據的存放形式多樣,可以是數據庫,也可以是磁盤上的文件。Data對外提供對數據的增、刪、改、查,以及打開文件等接口,這些接口的具體實現由開發者提供。

??想了解更多內容,請訪問:??

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

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

DataAbility介紹:

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

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

效果展示:

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

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

新建一個DataAbility

初始化數據庫操作

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

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

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

// 數據庫操作類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);
}
// 初始化數據庫
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);
}

實現DataAbility類內部的增刪改查操作

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

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

// 查詢數據
@Override
public ResultSet query(Uri uri, String[] columns, DataAbilityPredicates predicates) {
RdbPredicates rdbPredicates = DataAbilityUtils.createRdbPredicates(predicates, TABLENAME);
ResultSet resultSet = rdbStore.query(rdbPredicates, columns);
return resultSet;
}
// 插入數據
@Override
public int insert(Uri uri, ValuesBucket value) {
long res = rdbStore.insert(TABLENAME, value);
return (int)res;
}
// 刪除數據
@Override
public int delete(Uri uri, DataAbilityPredicates predicates) {
RdbPredicates rdbPredicates = DataAbilityUtils.createRdbPredicates(predicates, TABLENAME);
int res = rdbStore.delete(rdbPredicates);
return res;
}
// 修改數據
@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)來標識一個具體的數據,例如數據庫中的某個表或磁盤上的某個文件。HarmonyOS的URI仍基于URI通用標準,格式如下:

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

URI示例:

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

說明

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

使用DataAbilityHelper對象調用DataAbility的增刪改查操作:

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

1、獲取Uri的值:

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

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

// 訪問DataAbility的唯一路徑
private Uri uri;
// DataAbility數據操作類
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");
}

新增數據:

// 增加
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;
}

刪除數據:

// 刪除
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;
}

修改數據:

// 修改
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;
}

查詢數據:

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

??想了解更多內容,請訪問:??

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

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

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

2024-04-03 10:05:02

2021-07-29 14:03:35

鴻蒙HarmonyOS應用

2011-05-25 00:00:00

數據庫設計

2011-03-17 13:23:08

數據導入導出

2011-03-01 16:30:55

Oracle

2009-07-16 14:46:48

jdbc statem

2009-07-01 10:46:57

JSP程序JSP代碼

2009-08-25 16:36:16

C#進行數據庫編程

2025-01-26 00:00:35

2010-03-30 18:48:24

Oracle 學習

2011-12-30 09:03:59

MySQL數據庫

2010-11-19 13:28:13

2010-02-04 17:42:15

Android數據庫

2010-07-02 14:46:20

SQL Server數

2017-10-31 11:55:46

sklearn數據挖掘自動化

2010-05-27 14:55:40

簡單備份MySQL

2010-09-25 16:38:34

維護DHCP數據庫文件

2010-06-04 10:59:54

MySQL數據庫返回影

2024-08-01 13:12:57

2017-02-16 08:41:09

數據Vlookup匹配
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产激情在线 | 日韩一区不卡 | av香蕉| 欧美日韩高清一区二区三区 | 日韩电影免费观看中文字幕 | 亚洲精品99 | 国产精品久久久一区二区三区 | 一区不卡在线观看 | 午夜影院在线观看版 | 国产人成在线观看 | 国产欧美精品一区 | 中文字幕国产第一页 | 欧美电影一区 | 怡红院成人在线视频 | 日韩不卡视频在线观看 | 四虎影音| 亚洲乱码一区二区 | 黄色网址在线免费观看 | 毛片免费看 | 日韩精品视频在线 | 国产一区二区在线免费观看 | 久久精品免费一区二区 | 色网在线看 | av在线播放网 | 天天干在线播放 | 欧美不卡在线 | 国产精品视频一区二区三区 | av在线一区二区三区 | 欧美日韩在线免费观看 | 麻豆久久久9性大片 | 日韩在线观看 | 中文字幕一区二区三区四区五区 | 国产小视频在线观看 | 精品毛片| 国产一区免费 | 亚洲欧美精品 | 91麻豆精品国产91久久久久久久久 | 国产精品视频中文字幕 | 第一av| 国产一区二区中文字幕 | 欧美夜夜 |