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

Composants graphiques Android Discussion :

Apprendre à utiliser la base de donnée SQLite, un tutoriel de Mathias Seguy


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de MathiasSeguy
    Homme Profil pro
    Fondateur Android2EE - Formation Expertise Android
    Inscrit en
    Avril 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fondateur Android2EE - Formation Expertise Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 185
    Billets dans le blog
    6
    Par défaut Apprendre à utiliser la base de donnée SQLite, un tutoriel de Mathias Seguy
    Bonjour,

    Je vous propose un tutoriel pour apprendre à utiliser la base de données SQLite avec Android

    N'hésitez pas à laisser des commentaires à partir de cette discussion.

    L'URL du tutoriel : http://mathias-seguy.developpez.com/...onnees-sqlite/

    Lire aussi les Cours et tutoriels pour apprendre Android et les Cours et tutoriels pour apprendre Java

    Bonne lecture

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Par défaut bdd SQLite
    Bonjour,
    Merci pour le tuto
    je m'y connais pas du tout en bdd alors je désirais vous demander, est ce que je peux utiliser SQLite dans mon projet, je m'explique:
    je dois créer un site web, y intégrer un lien vers une application mobile (androïde) à télécharger. Le contenu du site et de l'application sera le même, avec une option de géolocalisation pour l'appli (c'est à dire que l'application fonctionnera au wifi) . Est il possible avec SQLite de créer une et une unique base de données pour les deux (site et appli) ? ça sera une bdd globale et sil ya mise à jour, le contenu du site changera et il sera demandé à l'utilisateur de l'appli de la mettre à jour..
    Merci
    Cordialement,
    Nina

  3. #3
    Membre Expert
    Avatar de MathiasSeguy
    Homme Profil pro
    Fondateur Android2EE - Formation Expertise Android
    Inscrit en
    Avril 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fondateur Android2EE - Formation Expertise Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 185
    Billets dans le blog
    6
    Par défaut
    Bonjour Niniche,
    Merci, heureux que cela t'es plu.
    Alors pour répondre à ta question.
    Oui tu peux, mais ce n'est pas la meilleure stratégie. En effet, cela suppose qu'à chaque modification de ta BD, tu reconstruises ton application ce qui est un peu lourd. Ensuite, tu ne partages pas à proprement parler ta base serveur et ta base Android. Il faut que tu fasses un extract sous forme de fichier de ta base serveur et que tu injectes ce script Sqlite dans ta base Android. Pour cela, dans ta méthode onCreate ou dans ta méthode onUpgrade de ta classe SqliteDBOpenHelper, tu lis ce script et tu rejoues les instructions (avec la méthode executeSql (je te dis ça de tête)), ce qui est un peu lourd, pas beaucoup mais un peu.

    La seconde stratégie, poussive aussi, est de mettre en place le DesignPattern de SyncAdapter (je n'en ai pas parlé mais il y a de la doc sur le net pour t'aider). Ce n'est pas, là non plus, évident, mais cela te permet de synchroniser ta base de données locale dès qu'un truc change sur le serveur (et vis-versa). Du coup, tes utilisateurs n'ont rien à faire et toi non plus quand tu fais un update de ta base serveur. Ca marche dans les deux sens.
    Pour plus d'informations:
    http://developer.android.com/trainin...ers/index.html
    http://developer.android.com/trainin...c-adapter.html
    et moi, j'ai appris à le faire en lisant ce post qui est en anglais mais assez clair:
    http://blog.udinic.com/2013/07/24/wr...d-sync-adapter

    Dernière stratégie qui est je pense la plus facile pour toi et la plus agréable pour l'utilisateur, utilises FireBase ou CouchBase comme base de données. Ce sont des librairies tierces qui te permettent de mettre en place un BD qui sera syncyhronisée de manière transparente entre ta BD locale et ta BD serveur. Comme le SyncAdapter tu vas me dire. Oui exactement, en juste, mille fois plus facile.
    Je commence par CouchBase parce que j'ai rencontré l'un de ses développeurs à la DroidCon London (Laurent Doguin, son twitter @ldoguin) et le truc important c'est que la base de données est en noSql. Voilà, je pose ça là, moi je suis fan
    http://www.couchbase.com/

    Le second est FireBase, qui appartient à Google et est donc ton ami à toi le développeur Android. Là, c'est juste magique, bien fait, facile à prendre en main avec de la doc un peu partout.
    https://www.firebase.com/docs/android/
    https://www.firebase.com/tutorial/#gettingstarted
    http://www.raywenderlich.com/109706/...etting-started

    Dans la cadre de c'est quoi le mieux, je préconise FireBase pour les développeurs Android qui souhaite avoir une BD en mode real time synchronisée.
    Ainsi pour répondre à ta super question, FireBase est la solution qu'il te faut pour ton problème. Ok, il va te falloir monter en compétence dessus
    Bonne soirée à toi.

    ps: Je suis pas expert FireBase, je vais pas pouvoir répondre à tes futures super questions

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Par défaut Merciiiiiiiiiiiiiiiiiiiiiiiiiiiii
    Merci beaucoup Mathias Seguy pour vos recommandations! Je vais jeter un coup d’œil aux liens pour mieux comprendre et bien choisir

  5. #5
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Par défaut
    Merci Mathias,

    C'est vraiment un tutoriel complet et surtout avec des exemples concrétisants (surtout çà !).

    En ce qui concerne l'ouverture et la fermeture de la base de données, je ne sais pas si vous avez vu une de mes discussions,

    j'aimerai savoir lequel des deux méthodes est adaptée et optimisée :

    -Ouvrir une seule fois la base de données dans onCreate() et la refermer dans onResume(), onPause();
    ou
    -Ouvrir la BDD avant une requête et la refermer aussitôt après la requête ?

    __merci

  6. #6
    Membre Expert
    Avatar de MathiasSeguy
    Homme Profil pro
    Fondateur Android2EE - Formation Expertise Android
    Inscrit en
    Avril 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fondateur Android2EE - Formation Expertise Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 185
    Billets dans le blog
    6
    Par défaut
    Merci
    Concernant ta question lankoande, moi je préconise que tu créés une classe MaDao et que tu centralises l'accès à ta base de données dans cette classe.
    Ainsi dans cette classe, chaque méthode est responsable de l'ouverture et de la fermeture de la base:
    Pour un insert, tu ouvres la base, tu fais l'insert, tu refermes la base. Pareil pour les updates et les deletes.
    Pour les query, tu ouvres la base, tu fais ton query, tu parcours ton curseur et tu reconstruis tes données en tant qu'objet Java, tu fermes le curseur, tu fermes la base tu renvoies tes donnes java.
    Tous les accès à la base de données sont centralisés dans cette classe (tu peux en avoir plusieurs,une par table ou par type d'objet métier HumanDao, FamilyDao,AdressDao...).
    L'avantage, tout est bien fermé pas de fuite mémoire, indépendant du cycle de vie des activités, testable unitairement, centralisé (si ça chie y'a que là qu'il faut regarder).
    Bref, c'est ça que je fais, que je préconise (ou que j'impose à mes équipes quand j'ai des équipes ce qui est super rare dernièrement )

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/09/2015, 08h23
  2. Réponses: 6
    Dernier message: 10/05/2014, 12h38
  3. [BlueJ] Utilisation d'un base de données SQLite
    Par Enguerrand.P dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 1
    Dernier message: 10/01/2014, 16h45
  4. utilisation de base de donnée
    Par mohfa1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/03/2005, 17h40

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