IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Android Discussion :

Connexion Android à une Base de données Firebird avec le driver JDBC Jaybird


Sujet :

API standards et tierces Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    etudiant en informatique
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : etudiant en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Connexion Android à une Base de données Firebird avec le driver JDBC Jaybird
    Bonjour,

    Je cherche à établir une connexion entre Android et ma base de données Firebird.

    Après avoir créé mon application Android, j'ai ajouté le driver JDBC (Jaybird2_2_4.jar) comme étant le driver de Android Firebird, mais quand j’exécute jusqu’à "class.form" ça marche mais dès que j'ajoute
    Connection con = DriverManager.getConnection("jdbc:firebirdsql://localhost:3050:C:/Users/rafik/Desktop/project/base.gdb","SYSDBA","masterkey");, mon application s’arrête.

    Voici la partie de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    .
    .
    .
     try {
     
                    Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance(); System.out.println("Connected  the database");
                    Connection con = DriverManager.getConnection("jdbc:firebirdsql://localhost:3050:C:/Users/rafik/Desktop/project/base.gdb","SYSDBA","masterkey");
                    System.out.println("connexion etablie ");
                   }
     
                catch (ClassNotFoundException e1) {
                    e1.printStackTrace();System.out.println("");
                }catch (SQLException e1) {
                   // e1.printStackTrace();System.out.println("2Connected  the database");
                } catch (InstantiationException e) {
                    e.printStackTrace();System.out.println("");
                } catch (IllegalAccessException e) {
                    e.printStackTrace();System.out.println("");
                }
    Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 225
    Points
    20 225
    Par défaut
    1- On ne se connecte jamais à une base de données distante directement pour des raisons évidentes de sécurité. On passe par un webservice.
    2- On ne fait pas de requêtes réseau sur le thread UI. Il faut passer par un autre thread sans quoi tu auras une erreur
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Homme Profil pro
    etudiant en informatique
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : etudiant en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    J'ai déjà fait un WebService pour MySQL mais pas Firebird, mais avec ce que j'ai trouvé on peut établir cette connexion avec un driver JDBC sans utiliser les pages PHP... J'ai même vu des vidéos réalisées pour ça. Enfin, je pense que c'est ça.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    En dehors des pratiques sur Android (que je ne connais que peu) qui sont d'envoyer les messages d'erreur vers le logcat, le fait de mettre un catch vide te masquera à coup sûr les éventuels messages d'erreur (te privant ainsi d'informations indispensables à la résolution de ton problème). Je veux parler de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch (SQLException e1) {
         // e1.printStackTrace();System.out.println("2Connected  the database");
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    etudiant en informatique
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : etudiant en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Le probleme est que je ne sais pas exactement où se bloque mon programme. Il se bloque dans la partie Connexion (conn= DriverManager.getConnection...); et pourtant le code me semble bon...

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui mais justement un DriverManager.getConnection() peut soulever une SQLException, et ton code ne les affiche jamais les SQLException.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Bonjour,

    Si jamais tu parviens à savoir où ça bloque, pense à jour mettre le message d'erreur, lequel ne s'affiche pas dans le logcat du fait que tu n'aies pas suivi le conseil de joel.drigo concernant le fiat de décommenter le e1.printStackTrace()...

    Il vaudrait mieux aussi suivre le conseil de @grunk qui t'indique la bonne pratique.
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    etudiant en informatique
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : etudiant en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    Si jamais tu parviens à savoir où ça bloque, pense à jour mettre le message d'erreur, lequel ne s'affiche pas dans le logcat du fait que tu n'aies pas suivi le conseil de joel.drigo concernant le fiat de décommenter le e1.printStackTrace()...

    Il vaudrait mieux aussi suivre le conseil de @grunk qui t'indique la bonne pratique.
    Merci, je vais voir pour tous ces conseils mais ce qui bloque c'est carrément l’application qui arrête de s’exécuter quand j'ajoute la ligne citée au-dessus et j'ai beau essayer mais ça n'a rien donné.
    Je ne sais plus quoi faire maintenant...

  9. #9
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 225
    Points
    20 225
    Par défaut
    La source de ton problème est expliqué dans le point 2 de ma toute première réponse.
    Mais je vais me répéter encore une fois :

    On ne fait pas de connexion réseau sur le thread UI !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Connection con = DriverManager.getConnection("jdbc:firebirdsql://localhost:3050:C:/Users/rafik/Desktop/project/base.gdb","SYSDBA","masterkey");
    C'est une connexion réseau, qui plus est sur le thread UI puisque à première vue tu es dans une activité et non un thread à part.
    Donc forcément ça lève une exception qui doit s'écrire dans le log cat et qui est du type android.os.NetworkOnMainThreadException.

    Pour pousser un peu plus loin tu fais une connexion sur localhost , hors je doute que ta base Firebird soit sur ton téléphone ... Si tu es sur émulateur et que tu souhaites accéder à ton PC ce n'est pas localhost qu'il faut utiliser mais 10.0.2.2

    Et pour finir je me re re re répète, on ne fait pas de connexion directe à une base de données.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Futur Membre du Club
    Homme Profil pro
    etudiant en informatique
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : etudiant en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Ok tu as raison, c'est juste que je suis sous pression... je vais essayer cette adresse.
    Merci

Discussions similaires

  1. Connexion d'une base de données MySQL avec une application Android
    Par eloumghari.imane dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 06/01/2014, 09h53
  2. Connexion distante à une base de données mysql avec Delphi 2007
    Par titours254 dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/03/2012, 08h32
  3. Connexion a une base de données; firebird.
    Par ridrum dans le forum Général Java
    Réponses: 3
    Dernier message: 07/10/2010, 09h20
  4. [firebird & access] Comment connecter une base de données Firebird avec Access
    Par Alpha001 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 26/02/2010, 12h33
  5. Réponses: 3
    Dernier message: 16/09/2009, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo