web-dev-qa-db-fra.com

Android: JDBC est-il pris en charge sur les appareils Android?

Je fais une application Android en utilisant JDBC pour envoyer des données à la base de données sans utiliser de services Web. J'ai fait une expérience avec l'émulateur Android 2.2 et je suis capable d'envoyer des données à MySQL DB (LOCALHOST). Après avoir essayé d'envoyer avec un appareil Android 2.2, j'ai changé le chemin d'accès de jdbc:mysql://10.0.2.2:3306/ avec jdbc:mysql://xx.xx.xx.xx:3306/.

xx.xx.xx.xx provient de ipconfig de ma machine localhost. Mais cela ne fonctionne pas dans l'appareil. Quelle pourrait être la raison.

Principaux doutes:

  1. Les appareils Android prennent-ils actuellement en charge JDBC?
  2. Est-ce que Android 2.2 prend en charge JDBC?
  3. Si elles sont prises en charge, quelles versions Android prendront en charge JDBC?
13
sachi

Oui. Vous devez vous rappeler de mettre votre code de connexion JDBC dans une AsyncTask, Sinon vous brûlerez BRULE BRÛLEZ!

10
Behnam

Est-ce que les appareils Android supportent JDBC?.

Android 2.2 prendra-t-il en charge JDBC?.

Si cette option est prise en charge, les versions Android prenant en charge JDBC.

NO Android ne supporte pas localement la base de données MySQL, nous ne pouvons donc pas utiliser une connexion JDBC depuis un appareil Android, son support only base de données sqlite.

et si vous souhaitez utiliser votre base de données à partir d'un serveur, créez simplement un service Web, toutes les connexions de base de données étant alors gérées à partir du serveur. 

cependant, il vous aide à comprendre horrible JDBC et Android !! SO Question

1
dharam

Download MySQL JDBC Connector 3.0.17 et ajoutez-le à votre chemin de génération de projet Android.

import Java.sql.Connection;



import Java.sql.DriverManager;
import Java.sql.ResultSet;
import Java.sql.ResultSetMetaData;
import Java.sql.Statement;
import Android.app.Activity;

importer Android.os.Bundle; importer Android.widget.TextView;

public class MysqlSample01Activity extends Activity {

private static final String url = "jdbc:mysql://<server>:<port>/<database>";
private static final String user = "<username>";
private static final String pass = "<password>";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    testDB();
}

public void testDB() {
    TextView tv = (TextView)this.findViewById(R.id.text_view);
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection(url, user, pass);
        /* System.out.println("Database connection success"); */

        String result = "Database connection success\n";
        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("select * from table_name");
        ResultSetMetaData rsmd = rs.getMetaData();

        while(rs.next()) {
            result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n";
            result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n";
            result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n";
        }
        tv.setText(result);
    }
    catch(Exception e) {
        e.printStackTrace();
        tv.setText(e.toString());
    }   

}

}

1
Akilan

Oui, vous pouvez vous connecter à une base de données à l'aide de JDBC sous Android. Ajoutez simplement cette ligne à votre dépendance de gradle:

 compile group: 'mysql', name: 'mysql-connector-Java', version: '5.1.44'

Et n'oubliez pas de changer de version selon vos besoins.

Après avoir ajouté ceci, gradle sync s’occupe de tout, il vous suffit de vous connecter à DB de la même manière que dans un programme Java jdbc simple. 

0
phanom9797

Il semble que votre installation Mysql n'autorise les connexions que depuis l'hôte local. Mettez à jour votre configuration Mysql pour autoriser les connexions à partir de n'importe quel hôte.

D'après ce que je peux voir, Java.sql est pris en charge depuis le niveau 1 de l'API et je ne pense pas que le support sera supprimé à tout moment.

/ Thomas

0
ThomasP1975