【问题标题】:How to communicate with an external SQL database through an Android app?如何通过 Android 应用与外部 SQL 数据库通信?
【发布时间】:2019-02-15 11:07:54
【问题描述】:

我有一个 Android 应用程序,它通过 PHP 脚本从外部 SQL 数据库写入/读取。数据库和 PHP 脚本都托管在 Amazon Web Services (AWS) 上。应用程序向 PHP 脚本发送 HTTP 请求,PHP 脚本与数据库通信。

有没有更简单的方法可以将应用程序与数据库连接起来?我觉得这种方法有点hacky。或者这是如何完成的?是否可以完全避免PHP脚本,只在应用程序中通过Java与数据库通信?

以下是获取数据库中所有内容的代码。

php 脚本:

$servername = "";
$username = "";
$password = "";

$conn = mysqli_connect($servername, $username, $password);

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT * FROM table";
$result = $conn->query($sql);

if($result->num_rows > 0){
    while($row = $result->fetch_assoc()){
        echo "rowname1: " . $row["rowname1"]. " rowname2: " . $row["rowname2"] . "\n";
    }
} else {
    echo "0 results";
}

$conn->close();

Java 代码:

requestQueue = Volley.newRequestQueue(this);
    String url = "";
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            textDatabase.setText(response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            textDatabase.setText(error.toString());
        }
    });

    requestQueue.add(stringRequest);

【问题讨论】:

  • 一般来说,通过 API(你称之为 php 脚本)与 DB 通信是一种很好的方法,比直接从 Android App 连接到 DB 要好得多。您的 API 有点不寻常。人们通常使用JSON 等数据格式进行通信 API Android

标签: java php android mysql


【解决方案1】:

这是通过 API 执行此操作的正确方法。

Frontend Application (Android, iOS, browser) <-> API <-> Backend

您可以直接连接到数据库,但不应该。为此,您必须在应用程序中输入用户名和密码。这样做,你如何防止用户连接你的数据库并改变他们想要的一切?反对这种方法的观点还有很多。

寻找REST APIs,或者GraphQL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 2022-12-05
    • 2013-07-30
    相关资源
    最近更新 更多