android应用程序是否遵循客户端/服务器端数据库架构


Does an android app follow client side/server side architechture with regards to database?

我是一个来自PHP背景的android新手。在PHP中基本上就是这样所有的数据库连接都发生在PHP代码(服务器端)中,然后在HTML代码(客户端)中转换。

从我所看到的android数据库连接,我们写一个服务在php使用mysql。在Android java类中,我们进行服务调用(我认为总是aysnc),然后当结果出现时,我们更新UI(有点像Ajax架构和gwt)。

上面的系统对我来说很有意义。我在某个地方读到,尽管在android上使用JDBC是不实用的,但它仍然可以使用。举例来说,我们希望通过JDBC进行数据库调用。在普通的web应用程序中,我会把它放在servlet中。但在安卓系统中,我们没有这个功能。我们只有UI小部件代码。

所以只是为了理解体系结构,有人能给我解释一下我在代码中应该在哪里进行JDBC调用吗?或者更广泛地说,它的架构与传统的客户端/服务器端不同吗?

Like Php:

您过去在PHP中所做的事情的简要回顾如下:

  • 通过PHP连接MySQL服务器
  • 使用PHP函数查询服务器
  • MySQL服务器接收,解析查询并将结果发回
  • PHP解析响应,然后您显示(或做任何事情)它

PHP已内置支持MySQL库。

现在在android中,我们已经内置了对SQLite的支持。但不同之处在于SQLite将其数据存储在设备本身而不是服务器上。

对于数据库操作,使用SQLite遵循相同的过程:

    使用Android (Java)活动连接到SQLite数据库
  • 向数据库
  • 发送查询
  • SQLite引擎接收、解析查询并将结果发回
  • Android活动接收结果,然后你可以用它做任何你想做的事情

但是,问题来了

这只适用于想要在本地存储数据的情况,例如保存用户的分数。

假设你想在自己制作的游戏中加入排行榜。那么你就不能这样做了,因为数据是本地存储在所有设备上的。为此,我们需要将所有用户数据存储在一个/相同的位置。

解决方案(如PHP中的~)

我们将把我们的数据保存在一个在线服务器上,并将在需要时检索它。我们可以连接到服务器上的任何数据库引擎,但MySQL比其他引擎快。因此,我们将使用MySQL作为我们的数据库服务器,并使用PHP web服务连接到它。

这个web服务将为你做所有的数据库操作(主要是CREATE和READ)。通过这种方式,您可以将数据保存在服务器中,并在需要时全局检索它。

但是,它是如何做到的呢?步骤如下:

  • 创建web服务
    • PHP脚本的集合,可以读写数据库
    • 为了安全起见,插入OAuth之类的东西来执行交易并加密传输的数据(最好在框架中编写这种类型的服务)
  • Android活动发送READ或WRITE请求到web服务
  • Web服务接收、授权、解析请求
  • Web服务然后将适当的请求发送到MySQL服务器
  • MySQL服务器接收、解析查询并将结果发送回web服务
  • Web服务接收、解析响应并将结果发送回Android活动
  • Android活动接收数据,然后你可以玩它:)

你可能在Android本身没有使用JSON等私有数据库。就像在PHP中使用MySQL一样。

你可能会发现很多关于SQLLite的教程。但是,这里是谷歌Android页面的官方文档:http://developer.android.com/reference/android/database/sqlite/package-summary.html

简短的回答是你不能在android中使用JDBC。原因是JDBC对于移动设备来说太重了。但是您可以使用内置的SqLite支持与本地SqLite数据库一起工作。与JDBC MySql驱动程序相比,它有一些限制,但它应该符合您的需求。使用SqLite很简单:

  • 连接数据库
  • 发送查询
  • 获取数据
  • 处理数据

你唯一要记住的是你不应该在主线程中使用SqLite。你可以用Thread创建自己的线程,但最简单的解决方案是使用AsyncThread。

如果你想调用远程MySql数据库,那么你的方法就有点复杂了

    编写服务器端代码,处理来自android的请求并将其发送到数据库(例如:使用JSON)
  • 从android设备向远程服务器发送请求
  • 接收服务器应答
  • 处理

就像上面的SqLite方法一样,你应该在后台线程中完成它,以免阻塞UI。

-如果需要,您可以使用本地数据库(使用SQLite)
android中的服务器/客户端与任何其他应用程序相似:你需要一个WebService处理程序,通常(最佳实践)是AsyncTask。
解决方案:很好很简单……
创建一个.php为您完成这项工作,将结果解析为json工作流。使用asynctask获取并解析结果。如果需要,将数据添加到数据库中。你终于可以在onPostExecute方法中显示一个漂亮的UI了。