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

Android Discussion :

Comment charger des données d'une BDD distante


Sujet :

Android

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Points : 40
    Points
    40
    Par défaut Comment charger des données d'une BDD distante
    Bonjour,

    Mon problème est le suivant : Je cherche à savoir comment accéder à une BDD distante qui contient des données et chercher ces données dans une interface Android. Je souhaite par exemple "remplir" textview et des radiobuttons avec le texte que j'aurai récupéré dans ma base de données.

    Je vous remercie par avance pour votre aide.

  2. #2
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 596
    Points : 18 503
    Points
    18 503
    Par défaut
    Bonjour,

    Commence par créer une base de données SQLite dans ton application :
    SQLiteDatabase
    SQLiteOpenHelper
    Tout ça...

    Ensuite côté serveur tu devra faire des WebServices, ça c'est du PHP et je ne sais pas précisément comment ça fonctionne.

    Par contre côté Android, avec HttpPost, HttpClient, NameValuePair tu récupères un HttpResponse tu le transforme en String, puis en JSONArray ou JSONObject, selon ce que t'as fais côté PHP, et avec ces objets tu remplis ta base de donnes.

    Après c'est plus ou moins compliqué selon ce que tu veux faire, si t'as juste une table sur ton serveur que tu ne mets jamais à jour c'est très simple.

    Par contre si l'utilisateur peut créer, modifier et supprimer des données, ça devient plus compliqué.

    Bon je ne pense pas que mon post t'ai beaucoup aidé, mais ça fait déjà pas mal de mot clé qui te guideront.
    Keith Flint 1969 - 2019

  3. #3
    Membre du Club
    Homme Profil pro
    Cisco
    Inscrit en
    Juillet 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Cisco
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 71
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Comme l'a remarqué thierrybenji tu dois tout d'abord mettre en place un WebService en PHP par exemple;

    Ce WebService s'occupera de transformer les données de ta/tes table(s) en fichiers: JSON ou XML.

    Puis ensuite je te conseille d'utiliser SQLite qui est le gestionnaire de Base de donnée le plus répandu et performant sur Mobile.

    Puis tu devra créer une Base de donnée SQLite (interne a ton application) avec comme l'a souligné thierrybenji : SQLiteOpenHelper qui te permettra de creer tes tables et d'instancier ta Base SQLite.

    Tu devra derriere ca faire un Parser JSON ou XML en fonction de ce que renverra ton WebService et ensuite pourquoi pas stocker les données recus dans ta Base SQLite.

    Voici un tuto sympa pouvant t'aider à commencer :

    JSONParser:
    http://p-xr.com/android-tutorial-how...roid-listview/

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Je déconseille le tuto sur le décodage JSON...
    On voit ce code trop souvent dans le forum et à chaque fois avec les même remarques sur la fonction "getJSONfromURL(String url)"
    * Pas de gestion des exception (juste des try/catch qui ne servent qu'à compiler sans erreur, avec des NPE à la clé)
    * Réinvention de la roue pour la lecture de la réponse (avec, au passage, aucune gestion des headers de retour quant à l'encodage de la réponse: zip ? charset ?).

    Quant à l'architecture de ce que tu veux faire, si elle est classique sur le web, la transformer en véritable application est plus complexe:
    * L'affichage se fait toujours à partir de la base SQLite locale (rapide et adaptée)
    * Une tache de fond, démarrée par le thread UI va "raffraichir" les données locales à partir du serveur (si Internet est dispo)

    Par contre, comme évoqué avant, si la mise à jour doit être possible sur le client, il faut un système de synchronisation
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre du Club
    Homme Profil pro
    Cisco
    Inscrit en
    Juillet 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Cisco
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 71
    Points : 55
    Points
    55
    Par défaut
    NICROMAN ceci est une base pour commencer, bien sure qu'il est préférable de gérer la recuperation de donnee dans une classe Asynchrone par exemple et d'adapter les try catch pour la gestion du reseau ect..

    PS: saurais tu comment parametrer le perimetre (bleu) sur une mapVew (API Google Map) ??

    http://www.developpez.net/forums/d12...ction-mapview/

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Je ne parlais même pas de ça... Ce n'est même pas une base pour commencer !
    D'abord la propension à vouloir coller des try/catch "pour que ça compile" me sort par les trous de nez... C'est non seulement très mauvais, mais dans un tutorial, ca fait vraiment tache, avec comme résultat le même code vu dans de vraies applications (si si !), pourquoi ne pas simplement les déclarer dans la signature ? mystère....

    On continue ? Le Log utilisé fait un joli +e.toString(), bref affiche juste le nom de l'exception... Pas de stack-trace, pas même d'exception passée au logcat, juste une chaine de caractère.... Ce n'est même pas un probème de "lazyness" cette fois, juste que le programmeur n'a jamais lu la doc de Log (pourtant affichée dès qu'on laisse la souris dessus)... Il faut bien sur faire Log.e("log_tag","Error in http connection",e);

    Il manque des initialisations à HttpClient (le "agent" par exemple, qui va voir la requête refusée par certains web-services).

    Toute la conversion en string peut être remplacée par un simple: String result = EntityUtils.toString(entity);

    Là, le pire, c'est que même si tout marche bien (la réponse n'est pas en 'bulk', pas zippée, pas encodée en 'ISO 8859-11'), il risque d'y avoir des resource-leaks (le input-stream pas fermé)... Il suffit de compiler en Java1.7 pour s'en convaincre...

    Ensuite le code ne gère ni le POST, ni les paramètres, bref, n'explique rien sur l'appel HTTP lui-même....

    Le parsing JSON alors ? (comme le laisse entendre le titre du tutorial ?)... haaa ben ok alors... mais il se résume en une seule ligne:

    return new JSONObject(result);


    Désolé pour la virulence de mes propos, mais c'est vraiment le genre de tutos qui font perdre un temps fou aux programmeurs qui veulent apprendre...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre du Club
    Homme Profil pro
    Cisco
    Inscrit en
    Juillet 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Cisco
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 71
    Points : 55
    Points
    55
    Par défaut
    Pour une fois qu'une personne mais du contenu sur ce forum..
    Le tuto que j'ai donne et un parmis tant d'autre, personnellement mon parser ressemble a ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     DefaultHttpClient httpClient = new DefaultHttpClient();
    	  HttpGet httpGet = new HttpGet(url);
              HttpResponse httpResponse = httpClient.execute(httpGet);
              httpResponse = httpClient.execute(httpPost);
     
              HttpEntity httpEntity = httpResponse.getEntity(); 
    	  String httpString = EntityUtils.toString(httpEntity);
    Si ca peut aider, n'hesitez pas a demander plus d'information, JE suis la pour ca.

    Nicroman tu n'a qu'a repondre a tout les post en aidant VRAIMENT les gens si tu es si consciencieux..

    StackOverflow >


  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Pas la peine de s'énerver ... je n'ai rien contre toi, et rien à redire sur le code que tu viens de poster...

    Juste que le tutorial en question est vraiment mauvais, et il n'est pas une semaine ou quelqu'un ne le suive et vienne poster ici en disant "je ne comprends pas, la fonction retourne un objet vide !"

    Maintenant il manque cruellement de tutoriaux concernant la gestion du réseau dans Android sur Developpez ! Et vu l'étendu du dossier (de HttpGet à la surcharge des ConnectionManager), si tu veux y participer, n'hésite pas !
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/10/2012, 09h54
  2. Réponses: 1
    Dernier message: 23/09/2010, 17h17
  3. [EasyPHP] Récupérer des données sur une BDD externe ?
    Par hisin dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 31/12/2009, 12h39
  4. [Toutes versions] Comment charger des données d'Excel vers une autre application
    Par orafin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/11/2009, 21h20
  5. Comment charger des données en mémoire à partir d'une BDD
    Par n@n¤u dans le forum Persistance des données
    Réponses: 2
    Dernier message: 20/02/2007, 11h53

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