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

Posted

技术标签:

【中文标题】如何将 android 应用程序数据持久保存到本地 sql server【英文标题】:How to persist android app data to on-premise sql server 【发布时间】:2019-10-14 05:18:54 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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 的身份框架、一些更自定义的身份验证方案(请参阅this)或其他库。

2。安卓

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

3.缓存

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

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

祝你好运!

【讨论】:

谢谢!这很有帮助。 @RyanGostic 没问题!如果我的回答对你有帮助,如果你能接受就太好了:)

以上是关于如何将 android 应用程序数据持久保存到本地 sql server的主要内容,如果未能解决你的问题,请参考以下文章

Android 房间持久库 - TypeConverter 错误错误:无法弄清楚如何将字段保存到数据库”

Android 应用持久认证

如何直接保存到持久存储,而不将数据保存到内存中

android: 文件存储

android 如何获取保存的图片的地址 并存到数据库中

Android:日常学习笔记———探究持久化技术