僅需三步,快速教你使用AG Connect雲數據庫服務


首先,什么是AppGallery Connect雲數據庫服務?

先來看下官方介紹:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-clouddb-introduction

華為AppGallery Connect的雲數據庫(CloudDB)是一款端雲協同的數據庫產品,提供端雲數據的協同管理、統一的數據模型和豐富的數據管理API接口等能力。在保證數據的可用性、可靠性、一致性,以及安全等特性基礎上,能夠實現數據在客戶端和雲端之間的無縫同步,並為應用提供離線支持,以幫助開發者快速構建端雲、多端協同的應用。

 

是不是有點難懂?下面我用大白話翻譯一下:

        雲數據庫(CloudDB)是為我們開發者服務的,他提供了一個端雲協同的數據庫服務,可以通過SDK和API接口,簡單方便的集成到APP應用里面,使用安全可靠。集成的時候,開發者們不需要關注服務器的搭建和部署運維,直接通過SDK和API接口使用就行。

 

翻譯以后,是不是就很好懂了哈哈。

其他原理、功能、安全啥的先不看,我們先來看下怎么在Android應用里,快速把CloudDB使用起來。經過我的試用,發現使用其實很方便,總結下來,就是下面的三步走:

1、界面操作:創建對象類型及存儲區

2、應用前置步驟:導出對象類型並且執行用戶認證。

3、在Android項目集成CloudDB: 集成SDK,使用接口增刪改查:

1、界面操作 :

寫在最前:CloudDB還處於Beta階段,需要先發郵件申請開通服務,可以參考這個鏈接:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-clouddb-apply

界面操作主要包括兩方面,創建對象類型 以及創建存儲區

1.1、對象類型是啥?

簡單來說,對象類型就是你數據庫里面,用來存放數據的表,每一個對象類型,就是一種表。打個簡單的比方,你有一個excel文件用來存數據,每一個excel里都可以創建不同的工作表,每一個工作表,就相當於CloudDB里面的一個對象類型。比如我是一個老師,工作表1里面存放的是學生信息,包括學生的性別和學號;表2里存放的學生的成績,包括學生的學號和各科成績。

這樣是不是就很好理解了。

 

1.2、存儲區又是啥?

        這個可以從界面意思來理解了,就是用來存儲數據的一片區域,不同的存儲區是相互隔離的。繼續上面的例子:我一個老師,可能會帶多個班級,記錄學生成績的時候,不同的班用不同的excel文件。每個excel文件里都包括了學生信息表和成績表。

        在上面你的例子里,每一個excel文件,就是一個存儲區,兩個excel互不相關。每個excel里都有不同的工作表,每個工作表就是一個對象類型。

1.3、創建對象類型

       講完了概念,下面來講一下操作:前提是你已經申請並且開通的CloudDB服務哈。

1、在 “我的項目” –>“構建” -> “雲數據庫”界面,在對象類型頁簽,點擊新增創建一個對象類型。

 

 

2、按照上面說的例子,我創建一個StudentInfo的表,注意需要設置主鍵,並且為認證用戶勾選Upsert和delete權限。

 

 

 

 

 

 

1.4、創建存儲區

這個就簡單很多了,直接在存儲區頁簽,點擊新增,數據存儲區的名字,點確定就好了。

 

 

 

 

應用前置步驟

想要在Android應用里正確的使用CloudDB,還需要有兩個前置的步驟,導出對象類型和用戶認證。

1、 導出對象類型:

簡單說,就是講上一步創建的對象類型,導出到你本地的Android項目里,這樣才能讓Android項目和你雲端的數據庫進行同步:導出的操作如下:

 

 

導出以后。記得放到你的Android項目里面,哪我這個舉例,我把導出的對象類型都放在model路徑下

 

 

 

 

在Android項目集成CloudDB

1、集成SDK

1、下載json:在你的“我的項目 –> 項目設置 -> 應用”下,下載json文件,並且放到你Android項目的的app路徑下:

                

 

 

2、  配置項目級build.gradle文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
buildscript {
     repositories {
         google()
         jcenter()
         maven {url 'https://developer.huawei.com/repo/'}
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:4.0.1'
         classpath 'com.huawei.agconnect:agcp:1.4.2.301'
     }
}
  
allprojects {
     repositories {
         google()
         jcenter()
         maven {url 'https://developer.huawei.com/repo/'}
     }
}
  
task clean(type: Delete) {
     delete rootProject.buildDir
}

 

3、 配置應用級build.gradle文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'
  ...
android {
                 ……
compileOptions {
                                 sourceCompatibility = 1.8
                                 targetCompatibility = 1.8
}
}
dependencies {
  ...
implementation 'com.huawei.agconnect:agconnect-auth:1.4.2.300'        // 華為Auth服務,用於用戶認證
implementation 'com.huawei.agconnect:agconnect-database:1.2.3.301'               // CloudDB的SDK
}

 

1.1      前置操作

補充一個小插曲,CloudDB對操作權限有做限制,需要認證用戶才能進行增刪改操作,因此還需要集成華為認證服務,上一個步驟集成的Auth SDK就是這個作用的。

1、先去AGC界面開通認證服務,此處為了最簡單的集成,我就只用匿名認證來給大家做示例:選擇“我的項目 –> 構建 -> 認證服務”中,啟動匿名認證。

 

 

 

2、匿名認證相關代碼:

AGConnectAuth.getInstance().signInAnonymously().addOnSuccessListener(new OnSuccessListener<SignInResult>() {
    @Override
    public void onSuccess(SignInResult signInResult) {
        // onSuccess
        AGConnectUser user = signInResult.getUser();
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(Exception e) {
        // onFail
    }
});

2、初始化

初始化包括有三部分:初始化AGConnectCloudDB、創建對象類型、以及創建並打開CloudDB Zone(也就是前面說的存儲區)

1、先在onCreate最外層,定義需要使用的參數:

private AGConnectCloudDB mCloudDB;
private CloudDBZoneConfig mConfig;
private CloudDBZone mCloudDBZone;

2、初始化AGConnectCloudDB。

AGConnectCloudDB.initialize(this);

3、獲取AGConnectCloudDB實例並且創建對象類型

mCloudDB = AGConnectCloudDB.getInstance();
try {
    mCloudDB.createObjectType(ObjectTypeInfoHelper.getObjectTypeInfo());
} catch (AGConnectCloudDBException e) {
    Log.e("CloudDB", "createObjectType Failed " + e.getMessage());
}
 

4、創建並打開CloudDB Zone

Config = new CloudDBZoneConfig("classs1",
        CloudDBZoneConfig.CloudDBZoneSyncProperty.CLOUDDBZONE_CLOUD_CACHE,
        CloudDBZoneConfig.CloudDBZoneAccessProperty.CLOUDDBZONE_PUBLIC);
mConfig.setPersistenceEnabled(true);
try {
    CloudDBZone = mCloudDB.openCloudDBZone(mConfig, true);
} catch (AGConnectCloudDBException e) {
    Log.e("CloudDB", "openCloudDBZone failed: " + e.getMessage());
}

注意咯,這里也可以用異步的openCloudDBZone2方法法,具體操作這里就不介紹了。具體看如下文檔哈。

https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-clouddb-get-started#h1-1594008398022

 

3、數據庫操作:

接下來既可以進行愉快的數據庫操作啦。下面我拿查詢舉個例:

1、先在AGC界面上,插入兩條數據用來測試:test1和test2:

 

 

 

2、然后回到Android項目里,通過executeQuery查詢全量數。

Task<CloudDBZoneSnapshot<StudentInfo>> queryTask = mCloudDBZone.executeQuery(
        CloudDBZoneQuery.where(StudentInfo.class),
        CloudDBZoneQuery.CloudDBZoneQueryPolicy.POLICY_QUERY_FROM_CLOUD_ONLY);
queryTask.addOnSuccessListener(new OnSuccessListener<CloudDBZoneSnapshot<StudentInfo>>() {
    @Override
    public void onSuccess(CloudDBZoneSnapshot<StudentInfo> snapshot) {
        //
        CloudDBZoneObjectList<StudentInfo> InfoCursor = snapshot.getSnapshotObjects();
        ArrayList<StudentInfo> infoList = new ArrayList<>();
        StudentInfo studentInfo = new StudentInfo();
        try {
            while (InfoCursor.hasNext()) {
                studentInfo = InfoCursor.next();
                infoList.add(studentInfo);
            }
            Log.i("CloudDB", "query success: " + JSONArray.toJSONString(studentInfo));
        } catch (AGConnectCloudDBException e) {
            Log.e("CloudDB", "query failed: " + e.getMessage());
        }
        snapshot.release();
    }
});

3、然后就能在Logcat里面,查看看相應的查詢數據:

 

 

 

4、后續的增刪改操作,我就不再詳細說明了,大家可以直接看文檔或API參考

      配置指南:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-clouddb-insert-data

      API參考:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-References/clouddb

總結

雖然資料文檔看起來很多,但實際操作起來,也就三步就能完成的。

1、雲側操作,創建對象類型和存儲區:

2、導出對象類型到Android項目

3、在Android項目中集成SDK並且使用API接口。

三步下來,就完成了一個數據庫系統的集成,沒有任何數據庫搭建和部署相關的操作,而且現在CloudDB還是免費使用的,簡直不要太爽。

 

最后再附上官方CloudDB文檔,需要的可以自行查看:

       配置指南:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-clouddb-insert-data

       API參考:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-References/clouddb

       Demo參考:https://github.com/AppGalleryConnect/agc-demos/tree/main/Android/acg-clouddb-demo-java

 

原文鏈接:https://developer.huawei.com/consumer/cn/forum/topic/0202441049629310404?fid=0101271690375130218&pid=0302441049629310621

原作者:Mayism


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM