乐趣区

关于android:仅需三步快速教你使用AG-Connect云数据库服务

首先,什么是 AppGallery Connect 云数据库服务?

先来看下官网介绍:https://developer.huawei.com/…

华为 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/…

界面操作次要包含两方面,创建对象类型 以及创立存储区

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 文件

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 文件

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/…

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/…

API 参考:https://developer.huawei.com/…

总结
尽管材料文档看起来很多,但实际操作起来,也就三步就能实现的。

1、云侧操作,创建对象类型和存储区:

2、导出对象类型到 Android 我的项目

3、在 Android 我的项目中集成 SDK 并且应用 API 接口。

三步下来,就实现了一个数据库系统的集成,没有任何数据库搭建和部署相干的操作,而且当初 CloudDB 还是收费应用的,几乎不要太爽。

最初再附上官网 CloudDB 文档,须要的能够自行查看:

配置指南:https://developer.huawei.com/…

API 参考:https://developer.huawei.com/…

Demo 参考:https://github.com/AppGallery…

原文链接:https://developer.huawei.com/…
原作者:Mayism

退出移动版