如何通过Android应用程序与外部SQL数据库进行通信?

时间:2019-02-15 11:07:54

标签: java php android mysql

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

是否有更简单的方法将应用程序与数据库连接?我觉得这种方法有点怪异。还是这是怎么做的?是否可以完全避免使用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);

1 个答案:

答案 0 :(得分:3)

这是通过API做到这一点的正确方法。

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

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

寻找REST APIsGraphQL