通过互联网直接在Android应用程序中连接到MySQL数据库,是不安全的,并且Google Play也不推荐这种方式。
一般而言,要在Android应用上使用MySQL,你需要设置一些RESTful服务(比如使用PHP,.NET,Java等来写),这些服务与你的数据库进行交互,然后让Android端通过HTTP请求(如GET,POST,PUT等)来调用这些服务。
以下是一个基本的步骤:
- 创建RESTful服务:
假设你已经有了一个MySQL数据库,并且你知道如何去写一些基本的PHP。你将需要设置PHP来接收HTTP请求,并根据请求来查询数据库。比如一个简单的”获取所有数据”服务可能看起来像这样:
<?php
header('Content-Type: application/json');
$server = "your_server";
$username = "your_username";
$password = "your_password";
$database = "your_database";
$conn = new mysqli($server, $username, $password, $database);
if ($conn->connect_error) {
die("Connection Failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM your_table";
$result = $conn->query($sql);
$rows = array();
while($r = mysqli_fetch_assoc($result)) {
$rows[] = $r;
}
print json_encode($rows);
?>
这会返回一个JSON格式的字符串,内容是表中的所有行。
- 在Android端进行HTTP调用:
然后在Android端,你需要创建一个HttpURLConnection,向你的php服务请求数据。你可能需要在Android端新建一个“异步任务”类以避免在主线程上进行网络连接。下面是一个简单的示例:
URL url = new URL("your_php_service_url");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
...
// 读取输入流的内容,并使用Android的JSON库将字符串解析为JSON对象
这样一来你的Android应用就能从PHP服务获取数据并将其显示在界面上了。
虽然这种方式需要编写更多的代码,但这会让你的应用变得更加安全并且更易于扩展。 此外,你也可以向PHP服务添加更多的逻辑,如将结果缓存到内存中,处理请求失败等。
由于Android的安全性问题,Android设备(如手机)不能直接与MySQL数据库进行连接操作,也就是说你无法在Android设备上直接实现像Java那样使用JDBC连接MySQL数据库,原生的Android不支持这一操作。
但是你可以采用以下的方法来解决这个问题:
- 利用Http协议,通过Web服务器与MySQL进行交互。
- 利用TCP/IP协议,自己写Socket服务。
其中,利用Http协议的方式最常见,其步骤一般为:
- Android发送Http请求到服务器(通常为PHP,JavaEE,Python等搭建的服务器),请求指定的业务。
- 服务器接收到请求后,进行业务逻辑处理(此处就包含与MySQL数据库的交互操作)。
- 服务器将处理结果返回给Android设备。
如你使用PHP,就可以在PHP中利用mysqli或PDO等扩展进行MySQL操作,然后将结果返回给Android设备。
但需要注意的是,由于这个过程中涉及到了网络操作,你需要确保你的App拥有网络权限。
以下是请求访问网络的权限(AndroidManifest.xml):
<uses-permission android:name="android.permission.INTERNET"/>
这样,你就可以在Android中使用类似HttpClient、HttpUrlConnection等类进行网络操作了。
这也是符合OSI七层模型中:“应用层-表示层-会话层”的网络操作的正常工作流程。
在此过程中,建议使用Https,不论是对Android还是Web服务器来说,都能提供更好的安全保证。
注意事项:
- 你应将MySQL数据库的操作写在PHP、JavaEE等服务器端的代码中,而不是Android端。
- 把与MySQL交互的所有敏感信息(如用户账号密码等)都应该放在服务器端,并通过POST方式发送请求。
- 切勿在Android端保存敏感信息,以防止被恶意破解。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/161027.html