Cloud DB提供多种云数据库数据管理方式,您可以在AppGallery Connect控制台管理数据,也可以在服务器上直接管理云侧数据库中的数据。您只需要在服务器端的服务中集成云数据库服务的Server SDK,即可调用它提供的接口,完成相关服务功能开发。Server SDK将会为您的服务器与云数据库的通讯和通讯安全提供保障。
使用Server SDK管理数据,需要完成以下准备工作:
在<项目名>/app/build.gradle文件中dependencies部分添加Server SDK。
dependencies {
// 添加Cloud DB SDK
implementation 'com.huawei.agconnect.server:agconnect-database-server-sdk:1.0.3.300'
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
您在进行本地应用开发时,可直接将AppGallery Connect控制台上导出的java格式文件添加至本地开发环境,无需再次创建对象类型。
在添加对象类型文件后,您就可以开始开发Server端的服务。在开发Server端的服务前,您需要先初始化对应数据处理位置的AGCClient,并创建Cloud DB zone实例和CloudDBZoneConfig对象,设置需要进行数据操作的云侧存储区名称。
String credentialPath = "agc-apiclient.json";
AGCClient.initialize(ClientNameEnum.CLOUDDB_CN.getClientName(), AGCParameter.builder()
.setCredential(CredentialParser.toCredential(credentialPath))
.build(), Constants.Region.REGION_CN);
AGCClient初始化参数对应关系如下表。
ClientNameEnum |
Constants.Region |
---|---|
CLOUDDB_CN |
REGION_CN |
CLOUDDB_RU |
REGION_RU |
CLOUDDB_SG |
REGION_SG |
CLOUDDB_DE |
REGION_DE |
AGCClient agcClient = AGCClient.getInstance(CLOUDDB_CN.getClientName());
agConnectCloudDB = AGConnectCloudDB.getInstance(agcClient);
CloudDBZoneConfig cloudDBZoneConfig = new CloudDBZoneConfig("QuickStartDemo");
mCloudDBZone = agConnectCloudDB.openCloudDBZone(cloudDBZoneConfig);
在本节主要介绍如何在Server端的服务中进行数据写入操作,以便您了解如何使用Server SDK实现数据的写入。使用executeUpsert()方法实现数据的写入。BookInfo为已定义对象类型,可参见新增和导出对象类型。
public void upsertBookInfo(BookInfo bookInfo) {
if (mCloudDBZone == null) {
LOGGER.warn("CloudDBClient is null, try re-initialize it");
return;
}
try {
CompletableFuture result = mCloudDBZone.executeUpsert(bookInfo);
System.out.println(result.get());
} catch (AGConnectCloudDBException | ExecutionException | InterruptedException e) {
LOGGER.warn("upsertBookInfo: " + e.getMessage());
}
}
通过executeQuery()和get()方法的组合实现异步方式查询数据。
public void queryBooks(CloudDBZoneQuery query) {
if (mCloudDBZone == null) {
LOGGER.warn("CloudDBClient is null, try re-initialize it");
return;
}
try {
CompletableFuture> result = mCloudDBZone.executeQuery(query);
CloudDBZoneSnapshot snapshot = result.get();
processQueryResult(snapshot);
} catch (AGConnectCloudDBException | InterruptedException | ExecutionException e) {
LOGGER.warn("queryBooks: " + e.getMessage());
}
}
通过查询与orderByDesc()方法和limit()方法组合来实现数据的降序排序,并限制查询数据显示条数。
private void queryWithOrder() {
CloudDBZoneQuery query = CloudDBZoneQuery.where(BookInfo.class);
try {
query.orderByDesc("price");
query.limit(10);
CompletableFuture> result = mCloudDBZone.executeQuery(query);
processQueryResult(result.get());
} catch (AGConnectCloudDBException | InterruptedException | ExecutionException e) {
LOGGER.warn("queryWithOrder: " + e.getMessage());
}
}
Cloud DB提供多种云数据库数据管理方式,您可以在AppGallery Connect控制台管理数据,也可以在服务器上直接管理云侧数据库中的数据。您只需要在服务器端的服务中集成云数据库服务的Server SDK,即可调用它提供的接口,完成相关服务功能开发。Server SDK将会为您的服务器与云数据库的通讯和通讯安全提供保障。
使用Server SDK管理数据,需要完成以下准备工作:
npm install --save @agconnect/database-server
const clouddb = require('@agconnect/database-server/dist/index.js');
const agconnect = require('@agconnect/common-server');
您在进行本地应用开发时,可直接将AppGallery Connect控制台上导出的js格式文件添加至本地开发环境,无需再次创建对象类型。
在添加对象类型文件后,您就可以开始开发Server端的服务。在开发Server端的服务前,您需要先初始化AGCClient,并设置需要进行数据操作的云侧存储区名称,获取存储区实例。
const credentialPath = "resource\\agc-apiclient-xxxx.json";
agconnect.AGCClient.initialize(agconnect.CredentialParser.toCredential(credentialPath));
const agcClient = agconnect.AGCClient.getInstance();
clouddb.AGConnectCloudDB.initialize(agcClient);
const zoneName = 'QuickStartDemo';
const cloudDBZoneConfig = new clouddb.CloudDBZoneConfig(zoneName);
const mCloudDBZone = clouddb.AGConnectCloudDB.getInstance().openCloudDBZone(cloudDBZoneConfig);
在本节主要介绍如何在Server端的服务中进行数据写入操作,以便您了解如何使用Server SDK实现数据的写入。使用executeUpsert()方法实现数据的写入。BookInfo为已定义对象类型,可参见新增和导出对象类型。
async upsertBookInfos(bookInfo) {
if (!this.mCloudDBZone) {
console.log("CloudDBClient is null, try re-initialize it");
return;
}
try {
const resp = await this.mCloudDBZone.executeUpsert(bookInfo);
} catch (error) {
console.warn('upsertBookInfo=>', error)
}
}
通过executeQuery()查询数据。
async queryBooks(cloudDBZoneQuery) {
if (!this.mCloudDBZone) {
console.log("CloudDBClient is null, try re-initialize it");
return;
}
try {
const resp = await this.mCloudDBZone.executeQuery(cloudDBZoneQuery);
this.processQueryResult(resp.getSnapshotObjects());
} catch (error) {
console.warn('queryBooks=>', error)
}
}
通过查询与orderByDesc()方法和limit()方法组合来实现数据的降序排序,并限制查询数据显示条数。
async queryBooksWithOrder() {
if (!this.mCloudDBZone) {
console.log("CloudDBClient is null, try re-initialize it");
return;
}
try {
const cloudDBZoneQuery = clouddb.CloudDBZoneQuery.where(BookInfo).orderByDesc("price").limit(3);
const resp = await this.mCloudDBZone.executeQuery(cloudDBZoneQuery);
this.processQueryResult(resp.getSnapshotObjects());
} catch (error) {
console.warn('queryBooks=>', error)
}
}