首页 > 解决方案 > 如何将 android 应用程序数据持久保存到本地 sql server

问题描述

我的任务是构建一个新的 android 应用程序。我需要将应用数据持久保存到本地 SQL Server。不需要将数据从 SQL Server 传输到 android 应用程序,即我只需要 CRUD 中的 C。我不确定我应该如何设置它。任何人都可以帮助架构吗?我是否需要先将数据保存到本地 SqlLite 数据库,然后再运行一些东西以传输到本地 SQL Server 数据库?

我从未使用过 Azure 或在 .NET 中构建过宁静的服务。我们有一个旧的 .NET Web 服务 (.asmx),我更愿意使用它。那可能吗?

标签: android.netsql-serverwcfasmx

解决方案


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

1. 网络(REST)

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

您将需要一个端点用于 CRUD 的“C”。这将是 PUT 还是 POST 端点将取决于您的实现和用例的具体细节。看到这个答案:PUT vs. POST in REST

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

2.安卓

在 android 端,您将需要通过 Internet 访问 API。最简单的方法是使用某种网络库(我推荐OkHttp)。由于网络请求(访问 API)可能需要时间,因此强烈建议在主/UI 线程之外执行此操作。通过使用诸如RxJava之类的线程库,在 Android 中执行此操作变得更加容易。有很多关于如何将 OkHttp 与 RxJava 一起使用的示例(例如,请参阅答案)。

3.缓存

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

需要明确的是,您只需要将数据持久化到要缓存创建操作的实例中的本地 SqlLite 数据库中。

祝你好运!


推荐阅读