如何将 android 应用程序数据持久保存到本地 sql 服务器

How to persist android app data to on-premise sql server

我的任务是构建一个新的 android 应用程序。我需要将应用程序数据保存到本地 SQL 服务器。 SQLServer不需要向androidapp传输数据,也就是说我只需要CRUD中的C即可。我不确定我应该如何设置它。有人可以帮助架构吗?我是否需要先将数据保存到本地 SqlLite 数据库,然后 运行 将某些内容传输到本地 SQL 服务器数据库?

我从未使用过 Azure 或在 .NET 中构建过 restful 服务。我们有一个旧的 .NET Web 服务 (.asmx),我更愿意将其用于此目的。这可能吗?

所以这个问题有几个要素。我分三部分回答。

1。网络(休息)

您将需要(正如您提到的)RESTful 服务来将外部请求连接到 on-premise SQL 服务器。我相信您可以使用 .NET (.asmx) 来创建这样的 API(您可以在网上找到很多指南)。您还可以使用 ASP .NET Core 或更现代的技术,例如 Node.js、Ruby on Rails 等

您将需要一个端点用于 "C" CRUD。这将是 PUT 还是 POST 端点将取决于您的实施和用例的具体细节。请参阅此 SO 答案:PUT vs. POST in REST

您可能还需要某种身份验证系统来确保只有经过授权的个人才能访问您的数据库。为此,您可以尝试使用 Microsoft 的身份框架、更多自定义身份验证方案(请参阅 this)或其他库。

2。 Android

在 android 端,您将需要通过互联网访问 API。最简单的方法是利用某种网络库(例如,我建议 OkHttp). Since network requests (hitting an API) can take time, it is also highly advised to do this off of the main/UI thread. Doing this in Android is made much easier through the use of a threading library such as RxJava. There are many examples out there on how to use OkHttp with RxJava (see 回答)。

3。缓存

这是一个额外的学分部分。如果您想在 Android 设备上缓存创建操作(例如,如果您没有网络),则需要使用 on-device 持久存储。如果这不是必需的,您可以跳过此步骤。对于 on-device 持久存储,我建议查看 Android Room persistence library(它与 RxJava 也有很好的集成)。

需要说明的是,您只需将数据保存到要缓存创建操作的实例中的本地 SqLite 数据库。

祝你好运!