2 votes

Échec du lien de communication lors de la connexion à mysql

J'essaie de me connecter à une base de données mysql depuis mon application Android.

Je reçois Défaillance de la liaison de communication erreur.
Voici l'extrait de code :

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;
    }
}

J'ai essayé toutes les combinaisons possibles comme indiqué dans les commentaires et j'obtiens l'erreur suivante dans causée par dans logcat :

  • en utilisant localhost --> Caused by: java.net.ConnectException: localhost/127.0.0.1:3306 - Connection refused
  • en utilisant 127.0.0.1 --> Caused by: java.net.ConnectException: /127.0.0.1:3306 - Connection refused
  • en utilisant 10.0.0.0 --> Caused by: java.net.SocketException: The operation timed out
  • en utilisant 192.168.1.104 --> Caused by: java.net.SocketException: The operation timed out
  • lors de l'utilisation de MainSrv04 --> Caused by: java.net.UnknownHostException: MainSrv04

J'ai également envoyé un ping à mysql port par telnet et ça marche.
De plus, j'ai pris soin des privilèges.

Mais je reçois toujours Communications link failure erreur.

Toute aide est la bienvenue.

2voto

CODE FISH Points 2246

L'application Android est-elle sur le même réseau ? Si ce n'est pas le cas

jdbc:mysql://192.168.1.104:3306

y

jdbc:mysql://10.0.0.0:3306

ne fonctionnera pas.

Indiquez l'adresse réseau correcte de mysql.

1voto

tjenen Points 31

J'utilise dernière version de l'adt y mysql-connector-java-5.1.17-bin.jar Cela fonctionne pour moi :

Ajoutez le code ci-dessous dans votre fichier après la ligne 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);
}

et utiliser import android.os.StrictMode;

Si vous utilisez une nouvelle api, ajoutez @SuppressLint("NewApi");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X