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 :

Création/suppression dynamique d'une table dans une base sqlite


Sujet :

Android

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut Création/suppression dynamique d'une table dans une base sqlite
    Bonjour,
    je fais une appli qui utilise une base sqlite. Dans cette base il y aura une table permanente et je souhaite (en fonction des clicks) créer une u plusieurs autres tables à l'intérieur de la même base. Idem pour la suppression. Peut on créer/supprimer dynamiquement des tables dans une base ? Si oui comment ?
    Faut il une classe openhelper par table ? Comment passer le nom de la table en paramètre ?

    Merci par avance

  2. #2
    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
    OpenHelper n'est la que pour instancier le fichier global de base de données SQLite

    Les opérations DDL (create table, drop table, create sequence, create index, ...) et les opérations DML (insert, select, delete ...) sont toutes gérées par SQL.
    Donc execSQL("create table TOTO "); va créer la table toto tout comme execSQL("insert into TOTO values ...."); va insérer des données dans la table toto.

    Par contre, par définition de SGBDR, il est très rare de devoir créer des tables dynamiquement... Donc je me demande si il y a pas un problème de conception data à la base... tu pourrais nous en dire plus sur ce que tu cherches à faire ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Merci pour ta réponse.
    Ta question est exactement celle que je me pose. Est ce que je ne me plante pas dans la conception...
    En fait c'est tout con, je veux faire une appli qui gère des produits et des listes de courses. Je pensais donc avoir une table permanente qui est la liste des produits puis je pensais créer une table par liste de course. J'ai compris que la base sqlite ne gère pas le type list<String> donc je ne voyais pas comment faire autrement.
    Chaque liste contient soit des produits prédéfinis soit de nouveaux produit "occasionnel" que l'on ne veut pas enregistrer dans la base de produit. Les listes de course sont créées dynamiquement.
    Ensuite tout est affiché dans des listViews et expandableListView

  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
    Rien de compliqué donc....

    Le pire c'est que l'énoncé du problème donne souvent la solution:
    Et je conseille souvent de conserver dans les données la sémantique des "objets"...

    Donc là... on a:
    "des listes de course" => bim une table "LISTES"
    "des produits enregistrés" => bim une table "PRODUITS"

    Maintenant on veut quoi mettre des trucs dans les listes => bim une table "ENTREES" (qui pointe sur LISTES et sur PRODUITS)
    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
     
    create table LISTES (
       _ID  integer not null primary key,
       NAME text not null
    );
     
    create table PRODUITS (
       _ID integer not null primary key,
       NAME text not null
    );
     
    create table LISTES_ENTREES (
        _ID integer not null primary key,
        LISTE_ID integer not null,
        PRODUIT_ID integer not null
    );
    Rajouter aussi les contraintes (LISTE_ID references LISTES(ID) et PRODUIT_ID references PRODUITS(ID) )
    Eventuellement les contraintes d'unicité (unique index on (LISTE_ID,PRODUIT_ID) )
    Et la base ne risque pas de devenir "sâle".

    Sinon voir aussi dans les cours et tutoriels pour apprendre la programmation Android : http://android.developpez.com/cours/
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Donc si je comprends bien toutes les listes de course seront dans la table liste entrées et on peut reconstituer les listes grace à la colonne liste id. J avais pensé à plusieurs tables car je pensais que ce serait plus rapide pour effacer les listes.

  6. #6
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Citation Envoyé par pierreduguet Voir le message
    Donc si je comprends bien toutes les listes de course seront dans la table liste entrées et on peut reconstituer les listes grace à la colonne liste id. J avais pensé à plusieurs tables car je pensais que ce serait plus rapide pour effacer les listes.
    Tu confonds la notion de table et avec celle d'enregistrement, comme d'autres confondent la classe et l'objet. Tes tables ne sont pas censées changer (sauf cas très rare); ce qui change tout au long du programme ce sont les enregistrements (ajout/maj/supression).
    Ceci étant bien posé, on en arrive à la question de la conception. Ton problème est un cas d'école en informatique. Souvent on prend comme illustration un système de commande de produits (et de facturation). Il y a la table COMMANDE, la table PRODUIT et enfin la table association LIGNE_COMMANDE. C'est exactement ce que Nicroman t'a suggéré
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Ok merci pour tout et aussi merci pour les cours et tutoriels pour apprendre la programmation Android c'est topissime : http://android.developpez.com/cours/ . C est la première fois que j utilises les bases sqlite. Pour les objets ca va

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. Réponses: 1
    Dernier message: 08/12/2009, 22h35
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. Réponses: 2
    Dernier message: 02/06/2006, 11h26
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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