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 :

Importation de base de donnée MySQL dans une application


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 139
    Par défaut Importation de base de donnée MySQL dans une application
    Bonjour,

    Je travaille sur un petit projet et je me heurte à un problème épineux.

    Mon application sert de catalogue pour un grossiste, qui souhaite conserver dans son téléphone l'intégralité de ses produits. Il possède un site internet avec sa propre base de donnée (MySQL).

    Niveau contrainte, l'application doit être offline. Pas moyen de taper dans la base de donnée MySQL systématiquement via des WebServices. Je ne contacte le site que le temps de mettre à jour la base locale.

    Donc voilà comment je comptais procéder :
    -Configurer la base de donnée MySQL pour qu'elle génère un backup régulier (par exemple via sqlcoredump) en fichier .sql. Éventuellement via un web service, elle génère le backup à la demande en plus.
    -Rapatrier le .sql sur le téléphone par internet. Ça se déroulerait soit en automatique à certaines heures, soit par pression d'un petit bouton.
    -L'importer dans la base de donnée SQLite interne.


    Déjà, j'aimerais l'avis de la communauté concernant cette démarche. En effet, j'ai peur que la base de donnée soit un peu trop volumineuse à rapatrier par le web (quoi que là un backup complet de la DB, incluant des données inutiles, pèse 62Ko de texte).

    De plus, comment gérer l'importation ? Je n'ai pas trouvé de solution pour générer la base de donnée SQLite sans avoir à la recréer à chaque démarrage de l'application. Y'a pas moyen de garder la base déjà créée dans un coin, plutôt que tout recréer à chaque fois ?

    Enfin, l'importation du MySQL au SQLite ne risque pas de poser quelques problèmes ? Chaque SGBD a son SQL, qui diffère toujours un chouilla...



    Quelle est la démarche envisagée en général par les professionnels pour ce genre de problématiques ?

  2. #2
    Membre confirmé Avatar de Willy55
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 188
    Par défaut
    Salut,

    Il s'agit typiquement d'un web service, il faut mettre en place en place une architecture type REST avec un échange de données passant par du xml ou du json, ton site renvoi ces données formatées (xml, json etc...), coté android tu as un parser qui récupère les données et les insère dans une base SQLite.

    En tout cas moi je fais comme ça

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 139
    Par défaut
    On parle quand même d'une table recensant plusieurs centaines de produits, chacun ayant une dizaine de champs. Ca fait pas genre beaucoup pour tout envoyer par WebService ?

    Et du coup, je peux quand même les stocker dans ma base en local et pas avoir besoin de récupérer à chaque fois les données du serveur web ?

  4. #4
    Membre confirmé Avatar de Willy55
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 188
    Par défaut
    Si tu veux un accès offline de toute façon il faudra bien que tu les récupère a un moment donné, mais tu va ne faire un gros transfert qu'une fois, après se ne sera que des "mise a jour" non ?

    Tu peux stocker tes données en local sur le téléphone grâce a une base sqlite oui bien sur, c'est ton seul moyen si tu veux de l'offline.

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 139
    Par défaut
    Justement j'hésite... C'est moins lourd de transférer seulement les modifications de la base de donnée, mais j'ai peur du coup que ça nuise à l'intégrité des données. En rechargeant toute la table, je suis sur que c'est exactement la même que sur MySQL.

    Je sais que c'est un peu du chipotage, mais disons que c'est mon premier projet d'ampleur pour un vrai industriel, j'veux pas lui faire un truc baclé.

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Tu peux simplement via le langage serveur qui affiche le catalogue en ligne , faire un conversion mysql > sqlite.
    En gros je lis la base mysql et je réecris dans une base sqlite , c'est plus long qu'une conversion d'un dump sql mais aussi plus sur car on passe outre les différence d'implémentation du SQL en travaillant directement avec les données.

    Au moment de la synchro tu télécharges carrément une base de données qu'il te suffit ensuite d'ouvrir dans ton application.

    On peut imaginer un hash md5 à valider pour être certains que la base que tu importes est bien valide et non corrompue lors du téléchargement.

    Tant que la volumétrie de donnée à télécharger est raisonnable je m’embêterait pas à faire de la màj incrémentale , c'est beaucoup de boulot pour pas grand chose et la bdd source est peut être pas structurée pour.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/11/2012, 14h04
  2. Réponses: 5
    Dernier message: 04/10/2012, 17h44
  3. Réponses: 2
    Dernier message: 21/03/2012, 12h25
  4. Réponses: 1
    Dernier message: 31/07/2009, 08h12
  5. Connection Base de donnée mysql dans une application eclipse RCP
    Par Flowers dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 06/06/2008, 22h41

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