我目前正在 Android 上开发一个需要读取和写入数据库的应用程序。问题是使用该应用程序的每个人都需要读取相同的数据,因此如果一个人添加数据,则仅适用于他们特定安装的应用程序。
我需要的是一个解决方案,每个人都从同一个数据库读取和写入,也许是每个人都可以连接到的网络上的数据库,
所以我要问的是,对于每个人来说,单一数据库的最佳方法/API 是什么?
一般来说,对于那个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 加密的数据,但这非常昂贵。此外,如果有一些方法可以获得CAcert或StartSSL等免费证书。
如果您按照上面的建议使用准备好的语句,则不需要关心(盲)SQL 注入,但知道它的存在也很有帮助。
我建议实现一个REST API和JSON格式来传输数据。为了对您可以使用的数据进行编码,json_encode()
并且在 Android 上使用 classes JSONObject
。如果您还希望数据自动转换为可以使用GSON的类。