1

我目前正在 Android 上开发一个需要读取和写入数据库的应用程序。问题是使用该应用程序的每个人都需要读取相同的数据,因此如果一个人添加数据,则仅适用于他们特定安装的应用程序。

我需要的是一个解决方案,每个人都从同一个数据库读取和写入,也许是每个人都可以连接到的网络上的数据库,

所以我要问的是,对于每个人来说,单一数据库的最佳方法/API 是什么?

4

1 回答 1

1

一般来说,对于那个seanrio,您至少需要一个支持php 的网络空间(如果sqlite 插件可用)。一般来说,我建议使用真正的 SQL 或非 SQL 服务器(取决于您想要实现的目标)。根据我的经验,我建议使用 mysql,它在网络上很常见。

对于我的解释,我将以 PHP 和 MySQL 为例。

准备

首先确保您的服务器安装了正确的插件。您可以使用一行 php 脚本检查这一点:

<?php php_info(); ?>

数据库访问

在那里你应该寻找一个 secionMySQLi或更好地寻找PDO. 请注意,如果您找到一个部分mysql,请不要使用它。它们不再被维护并被正式弃用。您应该学习如何使用准备好的语句。如果您不确定要使用什么,请阅读本文将对您有所帮助。如果您选择 PDO,这里有一个很好的教程

快速说明为什么不应该在服务器端使用不使用 SQLite:此数据库是基于文件的,不支持同时支持多个用户。顺便说一句,这在客户端(Android)上没有问题,一次只有一个用户。

设计你的架构

在开始之前,请确保对您将获得多少用户有一个基本的了解。如果您有 10k 个用户,那么这一点至关重要,每个请求都需要 10 秒钟,您的客户不会使用您的应用程序。

阅读有关在极少数情况下效率数据存储的规范化的信息,对于高性能用例来说,非规范化也很重要。

保安

您应该知道如何保护您的用户的数据,特别是如何保护用户密码,这对于保护您的用户非常重要,以防您的网站被黑客入侵。所有密码不得以纯文本形式存储!而是将它们的所谓哈希与随机盐一起存储。作为示例,让我们以密码“12345678”(这是最常见的方式)在 Linux 系统上生成随机散列,/dev/urandom另请参阅此问题。如果您不想关心用户密码,您也可以使用Google+ 登录,这是一个非常酷的功能,但也非常复杂。

通常,您还应该传输所有由 ssl 加密的数据,但这非常昂贵。此外,如果有一些方法可以获得CAcertStartSSL等免费证书。

如果您按照上面的建议使用准备好的语句,则不需要关心(盲)SQL 注入,但知道它的存在也很有帮助。

传输

我建议实现一个REST APIJSON格式来传输数据。为了对您可以使用的数据进行编码,json_encode()并且在 Android 上使用 classes JSONObject。如果您还希望数据自动转换为可以使用GSON的类。

于 2013-06-09T13:10:15.377 回答