ClassNotFoundException lors de la connexion avec le connecteur mysql jdbc sur android

J'ai trouvé quelques réponses mais rien n'était utile.

J'ai ajouté mysql-connector-java-5.1.7-bin.jar aux bibliothèques référencées et la méthode suivante à mon activité de classe principale.

private void getServerData(String id, String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
{
    Log.i("Database Connection", " requesting data from server");

    Class.forName("com.mysql.jdbc.Driver").newInstance();               
    Connection con = DriverManager.getConnection("jdbc:mysql://10.0.2.2:3306/db_easy_maintenance", "root", "maintenance");
    Statement stm = con.createStatement();
    ResultSet rs = stm.executeQuery("SELECT Name FROM industrial_object");
    String entry;
    while(rs.next())
    {
        entry=rs.getString("Name");
        Log.i("Database Connection", "getting " + entry);
    }

    con.close();

}

Je démarre mon application et obtient une exception java.lang.ClassNotFoundException: com.mysql.jdbc.Driver à java.lang.Class.classForName.

Si je n'utilise pas try ... catch ... alors je reçois cette Exception avant de compiler.

Qu'est-ce qui ne va pas?

0
Oui oui. bibliothèques référencées signifient "bibliothèques référencées" dans eclipse -> package explorer -> myproject
ajouté l'auteur Hei Ranch, source
Avez-vous également ajouté le connecteur MySQL à votre classpath? Pas clair ce que vous entendez par "ajouté ... aux bibliothèques de références".
ajouté l'auteur QuantumMechanic, source

5 Réponses

Cela pourrait ne pas fonctionner car Android utilise un bytecode un peu différent. Tyr pour vérifier si la bibliothèque MySQL JDBC a été correctement traduite au format Dalvik. Il existe un outil appelé dex pour traduire le bytecode JVM dans celui de Dalvik. Si le pilote JDBC consiste en des classes non portables pour Android ou du code natif, vous ne pouvez pas l'utiliser sous Android

0
ajouté
Je ne peux pas trouver cet outil. Même Google ne montre pas d'entrées utiles.
ajouté l'auteur Hei Ranch, source

Cela devrait fonctionner, peut-être que vous devriez essayer avec un autre JavaSDK et une autre plate-forme Android.

0
ajouté
quel sdk recommandez-vous?
ajouté l'auteur Hei Ranch, source

Vérifiez que la bibliothèque est exportée (a l'attribut exported = "true" dans le fichier .classpath ). Vous pouvez également le faire dans l'onglet approprié dans les paramètres du projet dans Eclipse.

0
ajouté
ok c'est mon fichier classpath:
ajouté l'auteur Hei Ranch, source
malheureusement ne pas travailler
ajouté l'auteur Hei Ranch, source

JDBC est rarement utilisé sur Android, et je ne le recommanderais certainement pas.

JDBC est conçu pour les connexions réseau à bande passante élevée, à faible latence et hautement fiables (par exemple, serveur de bureau à serveur de base de données, serveur d'applications Web au serveur de base de données). Les appareils mobiles offrent peu de ceux-ci, et aucun d'entre eux de manière cohérente.

Donc l'alternative que je vous conseille d'utiliser consiste à:

Créez un service Web autour de votre base de données et accédez-y depuis Android.

En tant qu'avantages secondaires, vous améliorez la sécurité (en laissant votre base de données ouverte), pouvez décharger une certaine logique métier du client, mieux supporter d'autres plateformes (par exemple, les frameworks mobiles Web ou Web), etc.

0
ajouté
@K_Anas: Pouvez-vous s'il vous plaît montrer l'exemple de code de ce que vous avez dit? Je veux dire créer un service web pour accéder à MySQL db.
ajouté l'auteur GAMA, source
Je sais et ma version précédente utilisait ce type de connexion, mais mon patron pense différemment. Nous utilisons uniquement une connexion LAN et ne voulons pas publier cette application.
ajouté l'auteur Hei Ranch, source

see: http://developer.android.com/search.html#q=dx&t=0 and Android JDBC not working: ClassNotFoundException on driver - my answer on the bottom gives ridiculously specific instructions, although I am curious how switching to 1.6 was useful.

0
ajouté
ok j'ai utilisé votre bibliothèque au lieu de mysql-connector-java-5.1.7
ajouté l'auteur Hei Ranch, source
mysql-connector-java-5.1.20 était aussi mauvais pour moi
ajouté l'auteur Hei Ranch, source