php - Android 应用程序在数据库方面是否遵循客户端/服务器端架构?

标签 php android

我是一名来自 PHP 背景的 Android 新手。在 PHP 中基本上发生的事情是 所有数据库连接都发生在 php 代码(服务器端)中,然后在 html 代码(客户端)中隐藏。

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

上面的系统对我来说很有意义。我在某处读到,尽管使用 JDBC 在 android 上不实用,但仍然可以使用。举个例子,我们想通过 JDBC 进行数据库调用。在普通的网络应用程序中,我会将其放入servlet 中。但在 Android 中,我们没有这样的功能。我们拥有的只是 UI 小部件代码。

为了理解架构,有人可以向我解释一下我将在代码中的何处进行 JDBC 调用吗?或者更广泛地说,它的架构与传统的客户端/服务器端有何不同?

最佳答案

像 PHP:

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

  • 使用 PHP 连接到 MySQL 服务器
  • 使用PHP函数查询服务器
  • MySQL 服务器接收、解析查询并将结果发回
  • PHP 解析响应,然后显示它(或对其执行任何操作)

PHP 内置了对 MySQL 库的支持。

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

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

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

但是,问题来了

仅当您想在本地存储数据(例如保存用户分数)时,这才有用。

假设您希望在自己构建的游戏中拥有排行榜。那么你就不能这样做,因为数据存储在所有设备本地。为此,我们需要将所有用户数据存储在一个/同一位置。

解决方案(就像 PHP 中的一样)

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

该 Web 服务将为您执行所有(主要是创建和读取)数据库操作。这样您就可以将数据保存在服务器中,并在需要时全局检索它。

但是,它是如何完成的呢?步骤如下:

  • 创建网络服务
    • PHP 脚本的集合,可以从数据库读取和写入
    • 为了安全起见,插入诸如 OAuth 之类的东西来执行事务并加密正在传输的数据(最好是在框架中编写此类服务)
  • Android Activity 向网络服务发送读取或写入请求
  • Web 服务接收、授权、解析请求
  • 然后,Web 服务将适当的请求发送到 MySQL 服务器
  • MySQL 服务器接收、解析查询并将结果发送回 Web 服务
  • Web 服务接收、解析响应并将结果发送回 Android Activity
  • Android Activity 接收数据,然后您就可以使用它了:)

关于php - Android 应用程序在数据库方面是否遵循客户端/服务器端架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24742791/

相关文章:

android - Gradle DSL 方法未找到 : 'has()'

android - Paypal Android SDK : "Login Failed. System error. Please try again later", INTERNAL_SERVER_ERROR

android - 如何设置AndroidX库的EditTextPreference的最大长度?

javascript - C3JS的访问值

php - 如何从 html/php 页面内的 mySQL 数据库打印表格

php - 如何为两个版本(移动版和桌面版)保持相同的 URL?

php - 设置没有溢出的日期(使用 PHP Carbon)

php - magento 客户端被服务器配置拒绝

java - 运行 android studio 项目时出现由 OutOfMemoryException 引起的致命异常

android - 将android应用程序部署到真实设备上