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 :

Mise à jour de données


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut Mise à jour de données
    Bonjour,

    Je débute en dév sous Android et je ne connais pas Java non plus

    J'ai une base de données Sqlite pour débuter, en attendant de passer plus tard à une base centralisée que j'attaquerai avec des services web.

    1è table : tbUser [idUser (int), .....]
    2è table : tbCouleur [idCouleur (int), libCouleur (String), ...]
    3è table : tbAime [idUser, idCouleur] ; table de correspondance qui lie un utilisateur à ses couleurs préférées.

    Pour commencer, ce modèle de données est-il correct ?

    J'ai créé une ListView qui affiche chaque libellé couleur et en face une CheckBox cochée si il y a une liaison dans la table tbAime :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT c.idCouleur, c.libCouleur, a.iduser  
    FROM tbCouleur c 
       LEFT OUTER JOIN tbAime a ON (c.idCouleur=a.idCouleur)
    Mon soucis : quelle est la meilleure méthode pour mettre à jour la table tbAime lorsque l'utilisateur coche ou décoche une case ? Sachant qu'il faut aussi que je prévois la gestion des cases lorsque celle-ci sortent de l'écran suite à un scroll et qu'elles sont de nouveau affichées.
    En ayant aussi à l'esprit que plus tard, j'aurais ma base de données en ligne.

  2. #2
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    Je débute aussi sous Android, donc mes conseils valent donc ce qu'ils valent...
    Ma problématique est a peu près la même que toi.

    Voici ce que j'ai choisis de faire :
    Un site web avec un compte administrable et une gestion de "collection".
    Un programme Android avec une base sqlite permettant de consulter sa "collection" directement sur le tel.
    Un script PHP qui permet de synchroniser la "collection" avec ce qui est sur le site web. La synchronisation se fait en générant une base sqlite via le script PHP qui sera téléchargé sur le téléphone. Elle sera ensuite déplacée et insérée dans le répertoire ad hoc de mon programme. Si j'ai choisis cette méthode c'est parce que j'ai lu que dans le cas ou tu veux synchroniser 300 enregistrements, ton tel fait 300 appels (par exemple via du téléchargement de fichier xml) et cela prends des plombes...

    Après pour la base sqlite, j'ai vu deux méthodes :
    Celle ou tu créé la base à la première ouverture du programme
    Celle ou tu déplace une base toute faites à la première connexion (vide mais structurée)

    Comme je vais avoir plusieurs tables, j'ai choisis la seconde solution, qui n'est pas si compliqué a mettre en oeuvre...

    Pour la conception de la base, si tu as plus d'une table, j'ai lu qu'il est conseillé de nommer les identifiants sous la forme _id (plutôt que id comme généralement je nomme mon identifiant de table). Alors pourquoi, je sais pas trop, mais chez moi ca marche et j'ai lu des posts de gars qui galéraient pour ne pas avoir suivi ce conseil...

    Pour l'utilisation de la base sous Android. Sqlite, comprends le SQL, mais n'accepte que des requetes très simple. Donc les jointures tu oublies... Du moins c'est ce que j'ai compris. Prends la peine de chercher un tuto sur sqlite, tu comprendras tout de suite les limitations (et pourquoi cela s'appelle lite :-) ).
    Pour faire des jointures, tu as la possibilité d'utiliser des views (je suis pas familier de cela et je n'en ai pas encore fait). C'est comme une requete Sql mais stocké dans la base de données. Mais tu peux quand meme lui passer des parametres... Enfin bref, une fois encore, jete un oeuil a un tuto sqlite.

    Pour les mises a jour de base, pour le moment je me contente de la lecture et je suis emmelé dans les listviews et les téléchargements asynchrone (technique qui te permet d'afficher une liste view avec téléchargement d'image provenant de internet), chose dont je n'avais pas pensé au départ...

    Je n'ai encore rien tenté, mais je penses que ce sera clic bouton, mise a jour de la base sqlite et envoi d'un fichier xml par le tel vers le serveur... Du moins c'est ce que je vais essayer de faire... Ensuite si pour toi la mise a jour doit se faire sur le clic de la case, je penses que tu dois avoir un évenement associé au clic sur le composant qui te permettra de déclencher la mise à jour de la base.

    Plus globalement, il est conseillé d'avoir un script dédié aux appels à la base et aux requêtes, chose que j'applique pour le moment.

    Voila tout ce que je peux dire pour le moment sur ta problématique
    Bon courage, la persévérance cela fini toujours par payer en programmation :-)

    @+
    Cadou

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Par défaut
    Salut,

    Juste quelques remarques:

    j'ai lu qu'il est conseillé de nommer les identifiants sous la forme _id (plutôt que id comme généralement je nomme mon identifiant de table). Alors pourquoi, je sais pas trop, mais chez moi ca marche et j'ai lu des posts de gars qui galéraient pour ne pas avoir suivi ce conseil...
    Cela est indispensable pour utiliser certains mécanismes d'android, (par exemple peupler un spinner à partir d'un Cursor contenant le résultat d'un select), ca simplifie souvent les choses mais ce n'est pas systématiquement obligatoire.


    Sqlite, comprends le SQL, mais n'accepte que des requetes très simple. Donc les jointures tu oublies... Du moins c'est ce que j'ai compris.
    Les jointures fonctionne parfaitement avec sqlite. Concernant Android regarde la méthode rawQuery, elle te permet d'exécuter tes requêtes sql tranquillement.

    Ton cheminement est bon et tu peux également charger une base qui n'est pas vide.

Discussions similaires

  1. [JTable] mise à jour des données
    Par tripop dans le forum Composants
    Réponses: 3
    Dernier message: 04/02/2009, 18h52
  2. MySqlDAC et mise à jour des données
    Par charliejo dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/01/2006, 09h25
  3. mise à jour des données toutes les semaines...
    Par Toff !!!!! dans le forum Access
    Réponses: 20
    Dernier message: 22/12/2005, 11h38
  4. Réponses: 2
    Dernier message: 21/10/2005, 17h02
  5. Problème de mise à jour de données avec IBClientDataset
    Par Papino dans le forum Bases de données
    Réponses: 6
    Dernier message: 26/09/2005, 14h04

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