Android + MySQL à l'aide de com.mysql.jdbc.Pilote
Je suis en train d'écrire une application Android qui va se connecter à un serveur MySQL. Pour l'instant, je suis en train de tester le serveur MySQL sur mon ordinateur via XAMPP l'aide de http://localhost:3306/. Le code ci-dessous fonctionne très bien lors de l'essai strictement comme une application JAVA.
import java.sql.*;
public class MySQL{
public static void main(String[] args) {
System.out.println("MySQL Connect Example.");
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "database";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "";
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to the database");
conn.close();
System.out.println("Disconnected from database");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Cependant lorsque je l'ai ajouter à mon application Android, je reçois l'Exception e d'erreur.
//interact with MySQL!!!
private View.OnClickListener onSendRequest = new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText username = (EditText) findViewById(R.id.Huusername);
// String un = " " + username.getText().toString() + " ";
System.out.println("MySQL Connect Example.");
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "database";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "";
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);
Toast.makeText(getBaseContext(),
"Connected to the database.", Toast.LENGTH_LONG)
.show();
conn.close();
Toast.makeText(getBaseContext(),
"Disconnected form the database.", Toast.LENGTH_LONG)
.show();
} catch (Exception e) {
Toast.makeText(getBaseContext(),
"Exception e.", Toast.LENGTH_LONG)
.show();
e.printStackTrace();
}
}
};
Que je suis compiler mon application Android, je remarque l'instruction suivante dans la Console:
[2011-01-26 16:05:54 - hookup]: Dxwarning: Ignoring InnerClasses attribute for an anonymous inner class
(com.mysql.jdbc.interceptors.ResultSetScannerInterceptor$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
Je suppose que cette déclaration a quelque chose à voir avec l'Exception que j'obtiens. Quelqu'un a travaillé avec MySQL et Android qui pouvait me conduire dans la bonne direction?
Grâce
OriginalL'auteur Raddfood | 2011-01-26
Vous devez vous connecter pour publier un commentaire.
Utilisation connecteur JDBC mysql-connector-java-3.0.17-ga-bin.jar pour l'instant c'est la seule qui fonctionne.
Vérifier votre code, vous avez besoin pour mettre en œuvre un pool de connexions pour chaque activité de votre application, il suffit d'ajouter un privé "Connexion" de la var et initialiser que dans votre méthode OnCreate comme con = DriveManager.getConnection...... ensuite l'utiliser private var à chaque fois que vous avez besoin d'accéder à MYSQL.
OriginalL'auteur ruhalde
Une autre approche consiste à utiliser un Virtual Pilote JDBC qui utilise une architecture à trois niveaux: votre code JDBC est envoyé via HTTP à distance une Servlet qui filtre le code JDBC (configuration & sécurité) avant de le transmettre au Pilote JDBC MySql. Le résultat est envoyé en arrière à travers le protocole HTTP. Il existe des logiciels gratuits qui utilisent cette technique. Juste Google "Android Driver JDBC sur HTTP".
OriginalL'auteur kaw
Avez-vous essayé de regarder ContentProviders? http://developer.android.com/guide/topics/providers/content-providers.html
Vous aurez probablement plus de chance d'accéder à des données par le biais d'une mise en œuvre de cette base de données SQLite par exemple) que l'accès à MySQL directement.
OriginalL'auteur djg
Pour fournir une connexion à une base de données distante dans android, sera nécessaire d'utiliser un WebService car android ne dispose pas d'une API pour se connecter à une base de données distante.
OriginalL'auteur EuEu