有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

连接到mysql时java通信链路故障

我正在尝试从安卓应用程序连接到mysql数据库

我收到通信链路故障错误
下面是代码片段:

public class MySqlConnector {
    private Connection con = null;
    private String s = "";
    private String username = "root";
    private String password = "password01";
    private String connectionString;

    public String ConnectToDb() {
         connectionString ="jdbc:mysql://192.168.1.104:3306/mydatabase";
        //connectionString="jdbc:mysql://10.0.0.0:3306/mydatabase";
        // connectionString="jdbc:mysql://127.0.0.1:3306/mydatabase";
        //connectionString = "jdbc:mysql://MainSrv04:3306/mydatabase";
        // connectionString="jdbc:mysql://localhost:3306/mydatabase";

        // connectionString =
        // "jdbc:mysql://localhost:3306/mydatabase?user=root&password=password01&useUnicode=true&characterEncoding=UTF-8";

        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        try {
            con = DriverManager.getConnection(connectionString, username,
                    password);

            Statement st = con.createStatement();
            String sql = "SELECT First_Name FROM mydatabase.custinfo where CardNumber=5325784707";
            ResultSet rs = st.executeQuery(sql);
            s = rs.getString("First_Name");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (con != null) {
                try {
                    con.close();
                    Log.i("MySqlConnector", "Database connection terminated");
                } catch (Exception e) { /* ignore close errors */
                }
            }
        }

        if (s == "") {
            s = "No Result";
        }
        Log.i("MySqlConnector : s=", s);

        return s;
    }
}

我尝试了所有可能的组合,如注释中所示,并在logcat中的字段引起的中得到以下错误:

  • 使用localhost时-->Caused by: java.net.ConnectException: localhost/127.0.0.1:3306 - Connection refused
  • 使用127.0.0.1时-->Caused by: java.net.ConnectException: /127.0.0.1:3306 - Connection refused
  • 使用10.0.0.0时-->Caused by: java.net.SocketException: The operation timed out
  • 使用192.168.1.104时-->Caused by: java.net.SocketException: The operation timed out
  • 使用MainSrv04时-->Caused by: java.net.UnknownHostException: MainSrv04

我还通过telnetping了mysql端口,它正在工作
此外,我还照顾到了特权

但我仍然得到了Communications link failure错误

谢谢你的帮助


共 (2) 个答案

  1. # 1 楼答案

    android应用程序在同一个网络上吗?如果不是

    jdbc:mysql://192.168.1.104:3306

    jdbc:mysql://10.0.0.0:3306

    这是行不通的

    给出mysql的正确网络地址

  2. # 2 楼答案

    我使用最新版本的adt和mysql-connector-java-5.1.17-bin。jar,这对我很有用:

    将下面的代码添加到文件的setContentView(R.layout.activity_main);行之后

    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }
    

    并使用import android.os.StrictMode;

    如果使用新api,请添加@SuppressLint("NewApi");