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 éclairé 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
    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

  2. #2
    Membre éprouvé
    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
    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 éclairé 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
    Par défaut
    Citation Envoyé par mouddene Voir le message
    Bonsoir,
    tu peux utiliser %
    ça sert à quoi?

  4. #4
    Membre Expert
    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
    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 éclairé 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
    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.

  6. #6
    Membre Expert
    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
    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 confirmé

    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
    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".

+ 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