& # 39;简单的# 39;方法获得MySQL在本地主机在我的Android应用程序


The 'easiest' method to get MySQL on localhost in my Android Application

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

下一步是我在过去的几个小时里一直在努力的,那就是从数据库中获取信息到电话上!

我想要一个方法,最初只是在启动活动和填充listview时连接到DB或将所有条目,后来我计划将信息复制到电话内的SQLite DB。

我能找到的最简单的方法是什么?我可以足智多谋,但我只需要知道我在找什么!

你有很多选择

  1. 基于HTTP (REST/SOAP/等)的更高级别抽象,如已经提到的
  2. HTTP作为明文/CSV数据的代理(没有抽象)
  3. 从android设备到MySQL的直接JDBC连接
  4. 数据库数据导出/导入

我猜你在找选项3。这是同步远程数据库到本地(android上的SQlite),然后与本地数据工作?在这种情况下,您只需将一个mysql-client jar (JDBC驱动程序)放入您的应用程序中,就可以启动了。不过也有一些限制,就像ssambastien renaud在评论中提到的。然而,这些问题是可以解决的,即使用MySQL的自定义配置或选项(2),它可以以通用的方式实现(写入一次)

通常你需要创建服务器API:选择一些格式在你的web服务和android应用程序之间进行对话。然后,您将始终需要从服务器请求一些数据,这些数据将以上述格式在某种形式的网络响应中返回给您。接下来,您所需要做的就是解析这些数据并将其填充到适配器或其他设备中。

注意,网络操作可能需要相当长的时间,这取决于你的连接,所以你不能等到它结束时才显示你的UI -你需要以async的方式完成,并给用户一个数据正在检索的反馈。

现在在http post请求中传递json格式非常流行。看一下如何在android上解析json和如何在php中创建json api的教程。

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

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

编辑

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

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

https://github.com/w0rldart/lRapi

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

Laravel是一个MVC PHP框架,很容易习惯。

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