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 :

récuperer données SQLite en utilisant un split sur un String


Sujet :

Android

  1. #1
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut récuperer données SQLite en utilisant un split sur un String
    Bonjour,
    J'ai une table base de données SQLite avec un champ String qui contient plusieurs mots séparés par ','
    Supposant que catégorie = "gestion,informatique,langue"
    Le problème c'est que je n'arrive pas à savoir comment faire une requête qui récupère tout les centres de formations ayant comme catégorie "gestion".
    La structure de mon code d'accès et manipulation de la base de données est la suivante:
    -une classe de déclaration d'un objet "centreFormation"
    - une classe création des colonnes de la table
    -une classe pour la manipulation des données de la table.

    Ci-dessous la classe de manipulation des données et j'utilise la méthode recupererChoixFormations(String ville, String catégorie) pour effectuer la récupération des centres.
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    public final class FormationBDD {
     
    	private static final int VERSION_BDD = 11;
    	private static final String NOM_BDD = "formations.db";
    	private static final String TABLE_FORMATION = "table_formation";
    	private static final String COL_ID = "_id";
    	private static final int NUM_COL_ID = 0;
    	private static final String COL_LIB = "libellé";
    	private static final int NUM_COL_LIB = 1;
    	private static final String COL_TEL = "tel";
    	private static final int NUM_COL_TEL = 2;
    	private static final String COL_EMAIL = "email";
    	private static final int NUM_COL_EMAIL = 3;
    	private static final String COL_ADR = "adresse";
    	private static final int NUM_COL_ADR = 4;
    	private static final String COL_VILLE = "ville";
    	private static final int NUM_COL_VILLE = 5;
    	private static final String COL_CAT= "catégorie";
    	private static final int NUM_COL_CAT = 6;
    	private static final String COL_LAT = "latitude";
    	private static final int NUM_COL_LAT = 7;
    	private static final String COL_LONG = "longitude";
    	private static final int NUM_COL_LONG = 8;
     
     
    	private SQLiteDatabase bdd;
     
    	private MaBase maBaseSQLite;
     
    	public FormationBDD(Context context){
    		//On créer la BDD et sa table
    		maBaseSQLite = new MaBase(context, NOM_BDD, null, VERSION_BDD);
    	}
     
    	public void open(){
    		//on ouvre la BDD en écriture
    		bdd = maBaseSQLite.getWritableDatabase();
    	}
     
    	public void close(){
    		//on ferme l'accès à la BDD
    		bdd.close();
    	}
     
    	public SQLiteDatabase getBDD(){
    		return bdd;
    	}
     
     
    	public Cursor recupererChoixFormations(String ville, String catégorie){
    		return bdd.query(TABLE_FORMATION, new String[] {COL_ID, COL_LIB, COL_TEL, COL_EMAIL, COL_ADR, COL_VILLE, COL_CAT, COL_LAT, COL_LONG}, 
    		         COL_VILLE + " LIKE ? and " + COL_CAT + " LIKE ?",
    		         new String[] { ville, catégorie }, 
    		         null, null, null);
    	}
    	public void Truncate(){
    		bdd.execSQL("DELETE FROM " +TABLE_FORMATION+";" );
    	}
     
     
     
    }
    Merci d'avance pour votre aide
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  2. #2
    En attente de confirmation mail
    Homme Profil pro
    Ensimag
    Inscrit en
    Octobre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 57
    Points : 97
    Points
    97
    Par défaut
    Bonsoir,
    tu peux utiliser %
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public Cursor recupererChoixFormations(String ville, String catégorie){
    		return bdd.query(TABLE_FORMATION, new String[] {COL_ID, COL_LIB, COL_TEL, COL_EMAIL, COL_ADR, COL_VILLE, COL_CAT, COL_LAT, COL_LONG}, 
    		         COL_VILLE + " LIKE ? and " + COL_CAT + " LIKE ?",
    		         new String[] { ville, "%"+catégorie+"%" }, 
    		         null, null, null);
    	}

  3. #3
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut
    Citation Envoyé par mouddene Voir le message
    Bonsoir,
    tu peux utiliser %
    ça sert à quoi?
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  4. #4
    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
    Ceci est une affaire de SQL plus que d'Android.

    Si tu as utilisé 'LIKE' plutôt que '=' c'est que tu souhaites utiliser un motif plutôt qu'une valeur stricte. Un motif contient des méta-caractères comme le '%' qui représente une séquence arbitraire de 0 à n caractères.
    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

  5. #5
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut
    Je suis désolée, je n'ai pas compris pourquoi remplacer avec %.
    Mon problème c'est que je dois parcourir le champs catégorie (qui est de type String avec des éléments séparés par virgule) élément par élément pour chercher "gestion" (comme dans l'exemple) à chaque requête.
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  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
    Nous t'expliquons que la requête qui réponds à ton besoin est :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM formation WHERE categorie LIKE '%gestion%'

    Ainsi, il suffit juste que le champs catégorie contiennent l’occurrence 'gestion', même s'il y a des caractères supplémentaires avant ou après.
    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
    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
    http://www.sqlite.org/lang_expr.html

    Sinon il y a aussi le caractère '_' pour indiquer "n'importe quel caractère".
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

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

Discussions similaires

  1. [Débutant] Split sur une string mais de façon dynamique.
    Par Gigli dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/02/2012, 13h47
  2. [TOS 3.1.2] - [TMap] - faire un simple split sur un String
    Par spidetra dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 24/09/2009, 10h55
  3. Réponses: 4
    Dernier message: 03/01/2007, 21h56
  4. Utiliser le C pour récuperer données d'un capteur
    Par Malek_BAKLOUTI dans le forum C
    Réponses: 12
    Dernier message: 05/10/2005, 10h40

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