我是一名来自 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/