通信链路故障发送到服务器的最后一个数据包是1毫秒前.

Mah*_*her 8 java mysql android mysqlconnection

我试图连接mysql database但我失败了,显示了这个错误

Communications link failure Last packet sent to the server was 1 ms ago
Run Code Online (Sandbox Code Playgroud)

这是我的代码?任何人都可以帮助我

package android_programmers_guide.testconnection;


import java.sql.Connection;
import java.sql.DriverManager;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.widget.EditText;

public class TestConnection extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_connection);



           Connection conn = null;
           String url = "jdbc:mysql://127.0.0.1:3306/test";
           String driver = "com.mysql.jdbc.Driver";
           String userName = "root"; 
           String password = "root";


           try {
           Class.forName(driver).newInstance();
           conn = DriverManager.getConnection(url,userName,password);


           EditText editText=(EditText) findViewById(R.id.editText1);


           editText.setBackgroundColor(Color.GREEN);
           editText.setText("Connected to the database");

           conn.close();

           editText.setBackgroundColor(Color.BLUE);
           editText.setText("Disconnected from database");


           } catch (Exception e) {
           e.printStackTrace();
           }



    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_test_connection, menu);
        return true;
    }

}
Run Code Online (Sandbox Code Playgroud)

Vis*_*uth 0

android应用程序无法与同一系统中的mysql通信。因为,当您运行 Android 应用程序时,它会在模拟器内运行。模拟器是一个 类似于 Android 设备的虚拟移动设备。模拟器本身有一个IP地址。因此,根据应用程序,ip 127.0.0.1是模拟器的ip,因此android应用程序将尝试与模拟器中的mysql进行通信。我们知道,模拟器中不能有mysql,否则会通讯失败。您可以使用SQLite作为数据存储。如果您希望您的 Android 应用程序与mysql通信,您需要在另一个系统中安装mysql并提供该系统的ip。修改您的代码如下:

String url = "jdbc:mysql://192.168.1.102:3306/test";
Run Code Online (Sandbox Code Playgroud)

这里,我提到的192.168.1.102是第二个系统的ip。并且在尝试之前不要忘记对这些系统进行物理连接。

对于额外的知识:- mysql与 android 应用程序的直接通信不是正确的方法。制作一个与mysql通信的 Web 应用程序。在其中添加一个Web服务以将数据存储到mysql中。在 Android 应用程序中添加一个 Web 层,通过此 Web 服务与 Web 应用程序进行通信。您可以使用xmlJSON通过 Web 服务将数据从 Android 应用程序传输到 Web 应用程序。Web 应用程序应该将数据存储到 mysql 中由 Android 应用程序的 Web 服务调用接收。