从 Azure 获取结果插入一行并在插入 Azure 数据库后从本地数据库删除行数据
Get a Result from Azure a row is Inserted and Delete a Row Data From Local Database After Inserted in Azure Database
1.My 应用程序每 2 分钟将数据插入本地数据库(使用 Azure 离线同步),然后每 5 分钟数据通过后台服务同步到 Azure 数据库。
2.Each 插入 AZURE 服务器后的行数据,我想从本地数据库中删除。
我的问题 :
1.how 我能知道我的每一行是否插入到服务器中吗?任何响应都会从Server发回给client端。其他解决方案? .
2.Delete 从本地 Sqlite 插入到 Azure 服务器的一行(在从 Azure 服务器获取插入信息后)。
我还想使用 Azure 方法检索保存在本地数据库中的数据。
我在服务器端使用 Azure Cloud。
对于 1,您可以实现处理程序以在将该数据返回给客户端之前拦截服务器响应(参见:https://github.com/Azure/azure-mobile-apps-android-client/blob/ef4759078cb031de9a5cbb05d07dc52322952ac1/sdk/src/sdk/src/main/java/com/microsoft/windowsazure/mobileservices/table/sync/synchandler/SimpleSyncHandler.java)
public class MySyncHandler implements MobileServiceSyncHandler {
@Override
public JsonObject executeTableOperation(RemoteTableOperationProcessor processor, TableOperation operation) throws MobileServiceSyncHandlerException {
try {
return operation.accept(processor);
} catch (Throwable e) {
throw new MobileServiceSyncHandlerException(e);
}
}
如果操作没有抛出,则表示 HTTP 请求成功,然后您可以继续删除项目。
要删除行,您不想使用同步 table,因为那样会跟踪操作。您可以使用直接 SQL 连接来执行此操作。另一种选择是更新上述函数以抛出自定义错误而不是返回。这将允许错误冒泡到处理程序中的下一个方法 (onPushComplete)。
使用 TableOperationError class,可以很容易地取消操作并使用同步上下文中的内置方法丢弃本地项目。
因此遍历 getOperationErrors() 方法,对于每个自定义错误,只需调用 cancelAndDiscardItem 方法 (https://github.com/Azure/azure-mobile-apps-android-client/blob/ef4759078cb031de9a5cbb05d07dc52322952ac1/sdk/src/sdk/src/main/java/com/microsoft/windowsazure/mobileservices/table/sync/MobileServiceSyncContext.java#L283)
最后,通过 SyncTable class 从本地存储中检索数据。读取和查询方法大多与在线版本相同。这是从 Android QS 中提取的示例:
Query query = QueryOperations.field("complete").eq(val(false));
return mToDoTable.read(query).get();
Microsoft 通过使用查询 ID 在 iOS 中提供了 incremental sync, 仅检索自上次同步以来修改的记录 使用记录的 UpdatedAt
时间戳。也许您可以搜索 Microsoft 是否也在 android?
中提供了相同的功能
1.My 应用程序每 2 分钟将数据插入本地数据库(使用 Azure 离线同步),然后每 5 分钟数据通过后台服务同步到 Azure 数据库。
2.Each 插入 AZURE 服务器后的行数据,我想从本地数据库中删除。
我的问题 :
1.how 我能知道我的每一行是否插入到服务器中吗?任何响应都会从Server发回给client端。其他解决方案? .
2.Delete 从本地 Sqlite 插入到 Azure 服务器的一行(在从 Azure 服务器获取插入信息后)。
我还想使用 Azure 方法检索保存在本地数据库中的数据。
我在服务器端使用 Azure Cloud。
对于 1,您可以实现处理程序以在将该数据返回给客户端之前拦截服务器响应(参见:https://github.com/Azure/azure-mobile-apps-android-client/blob/ef4759078cb031de9a5cbb05d07dc52322952ac1/sdk/src/sdk/src/main/java/com/microsoft/windowsazure/mobileservices/table/sync/synchandler/SimpleSyncHandler.java)
public class MySyncHandler implements MobileServiceSyncHandler {
@Override
public JsonObject executeTableOperation(RemoteTableOperationProcessor processor, TableOperation operation) throws MobileServiceSyncHandlerException {
try {
return operation.accept(processor);
} catch (Throwable e) {
throw new MobileServiceSyncHandlerException(e);
}
}
如果操作没有抛出,则表示 HTTP 请求成功,然后您可以继续删除项目。
要删除行,您不想使用同步 table,因为那样会跟踪操作。您可以使用直接 SQL 连接来执行此操作。另一种选择是更新上述函数以抛出自定义错误而不是返回。这将允许错误冒泡到处理程序中的下一个方法 (onPushComplete)。
使用 TableOperationError class,可以很容易地取消操作并使用同步上下文中的内置方法丢弃本地项目。
因此遍历 getOperationErrors() 方法,对于每个自定义错误,只需调用 cancelAndDiscardItem 方法 (https://github.com/Azure/azure-mobile-apps-android-client/blob/ef4759078cb031de9a5cbb05d07dc52322952ac1/sdk/src/sdk/src/main/java/com/microsoft/windowsazure/mobileservices/table/sync/MobileServiceSyncContext.java#L283)
最后,通过 SyncTable class 从本地存储中检索数据。读取和查询方法大多与在线版本相同。这是从 Android QS 中提取的示例:
Query query = QueryOperations.field("complete").eq(val(false));
return mToDoTable.read(query).get();
Microsoft 通过使用查询 ID 在 iOS 中提供了 incremental sync, 仅检索自上次同步以来修改的记录 使用记录的 UpdatedAt
时间戳。也许您可以搜索 Microsoft 是否也在 android?