1

我已经成功地使用 POST 在我的网站上运行 PHP 脚本,它允许手机应用程序向数据库 (MySQL) 添加一个新条目,并删除一个条目。

下一步是我过去几个小时一直在努力解决的问题,那就是从数据库中获取信息到手机上!

我想要一种方法,该方法最初只是在启动活动并填充列表视图时连接到数据库,或者将所有条目都连接到数据库,然后我计划将信息复制到手机中的 SQLite 数据库。

我可以考虑实现这一目标的最简单方法是什么?我可以足智多谋,但我只需要知道我在寻找什么!

4

3 回答 3

1

一般来说,您需要创建服务器 API:选择某种格式在您的 Web 服务和 android 应用程序之间进行通信。然后,您将始终需要从服务器请求一些数据,这些数据将以上述格式在某种网络响应正文中返回给您。接下来,您只需要解析这些数据并填充到您的适配器或其他任何东西。

请注意,网络操作可能需要相当长的时间,具体取决于您的连接,因此您不能等待它结束显示您的 UI - 您需要以异步方式执行此操作,并向用户提供数据正在检索的反馈。

现在,在 http post 请求正文中传递的 json 格式非常流行。看看这个关于如何在 android 上解析 json 的教程和这个关于如何在 php 中创建 json api 的视频

当然,您可以尝试直接连接到远程 MySQL 服务器。在某些情况下,它确实是更简单的解决方案(您不需要编写服务器端 api 代码),但可能不太容易访问,因为标准 MySQL 端口不是在所有网络中打开。此外,您的 API 服务器可能会隐藏一些关于如何在现实中存储数据的实现细节,从而允许您从 MySQL 迁移到 PostgreSQL,而不会为 android 应用程序带来痛苦。

不要忘记保护您的数据免受未经授权的访问!

编辑

现在是 2017 年,现在最简单的选择是使用开源项目,该项目将为您的数据库提供 rest api,例如ArrestDBpostgrest

于 2013-04-11T21:46:13.050 回答
1

you have many options.

  1. higher level abstraction over HTTP (REST/SOAP/etc) like already mentioned
  2. HTTP as a proxy for plaintext/CSV data (without abstraction)
  3. a direct JDBC connection from android device to the MySQL
  4. database data export/import

我猜您正在寻找选项 3。即将远程数据库同步到本地(Android 上的 SQlite),然后使用本地数据?在这种情况下,您只需将 mysql-client jar(JDBC 驱动程序)放入您的应用程序中即可开始。不过有一些限制,比如评论中已经提到的 Sébastien Renauld。然而,这些问题可以解决,即使用 MySQL 的自定义配置或使用可以以通用方式实现的选项 (2)(编写一次)

于 2013-04-11T22:22:58.677 回答
0

我个人必须为 iOS 和 Android 设备开发以下 REST API 服务(基于 Laravel 框架,我称之为 lRapi),并且效果很好(应用程序使用的版本要复杂得多)。

https://github.com/w0rldart/lRapi

那里有很多模型和控制器可供您开始使用。响应采用 JSON 格式,带有适当的标头。我仍然需要向它添加更多文档,但在主示例视图中有一些,您可以通过设置虚拟主机并在浏览器中打开根页面来访问它们。

Laravel 是一个 MVC PHP 框架,很容易上手。

这是避免做大部分工作的好方法,只专注于实现你需要的其他东西。

于 2013-04-11T22:13:30.107 回答