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 :

Base de données, accéder à deux colonnes


Sujet :

Android

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut Base de données, accéder à deux colonnes
    Bonjour,

    J'ai une Personne avec un nom (String), un poids(int) et un identifiant et une base de données contenant des personnes.

    Je souhaiterais comparer les noms et poids de la personne avec les personnes de la base de données. J'arrive à comparer les noms mais je ne sais pas comment rajouter la comparaison des poids.

    J'ai essayé de faire ça mais ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Personne p = new Personne("paul",30)
        this.getReadableDatabase().query(
          TABLE_PERSONNE,
          new String[] { COL_ID },
          COL_NOM + " = ?",
          COL_POIDS + " = ?",
          new String[] {String.valueOf(p.nom)}, new int[] {p.poids},
          null, null, null, null);
    Quelqu'un saurait-il m'indiquer comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre actif
    Profil pro
    Développeur Back-End
    Inscrit en
    Août 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2003
    Messages : 138
    Points : 265
    Points
    265
    Par défaut
    Il faut que tu rassembles tes "comparaisons" dans le même champ et que tu les sépares par "AND".

    Donc un truc comme ça devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (...)      COL_NOM + " = " +  p.nom + " AND "+ COL_POIDS +"="+p.poids (...)
    Axel

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    pour le tableau de string je fais comment puisque le poids est un int ?
    j'obtiens cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    android.database.sqlite.SQLiteException: no such column: un (code 1): , while compiling: SELECT ID FROM table_tache WHERE TITRE = un AND PRIORITE = 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       c = this.getReadableDatabase().query(
                        TABLE_TACHE,
                            new String[] { COL_ID },
                            COL_TITRE + " = " + t.titre + " AND " + COL_PRIORITE + " = " + t.priorite,
                            new String[] {String.valueOf(t.titre)},
                            null, null, null, null);

  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
    J'imagine que p.nom est une String ? Donc pourquoi faire une String.valueOf ?
    Par contre pour le int oui....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     c = this.getReadableDatabase().query(
                        TABLE_TACHE,
                            new String[] { COL_ID },
                            COL_TITRE + " = ? AND " + COL_PRIORITE + " = ?",
                            new String[] { p.nom, String.valueOf(p.poids) },
                            null, null, null, null);
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    Bonjour,
    Oui p.nom est un string.
    Il y a un cas que j'avais oublié , en fait je veux qu'on ne puisse pas ajouté une personne qui a le même nom mais qu'on puisse modifié le poids d'une personne , par exemple dans la base de donnée j'ai
    Ema , 65kg
    pierre , 80kg
    Si je modifie Ema et que j'ajoute 60 kg ca fonctionne mais si je modifie Ema et que je mets paul ca ne marchera pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                c = this.getReadableDatabase().query(
                        TABLE_PERSONNE,
                        new String[] { COL_ID },
                        COL_NOM + " = ? AND " + COL_POIDS + " != ? " ,
                        new String[] { p.nom, String.valueOf(p.poids) },
                        null, null, null, null);

  6. #6
    Membre actif
    Profil pro
    Développeur Back-End
    Inscrit en
    Août 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2003
    Messages : 138
    Points : 265
    Points
    265
    Par défaut
    Dans ce cas, il faut que tu fasses deux requêtes différentes.
    La première te permet de voir si y'a déjà une personne qui a ce nom. Dans ce cas, tu fais un "update" et dans le cas contraire, tu fais un "insert".

    Axel

Discussions similaires

  1. Base de donnée.. Cacher des colonnes
    Par PtitGénie dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/12/2007, 22h28
  2. Réponses: 13
    Dernier message: 20/04/2007, 17h30
  3. Réponses: 8
    Dernier message: 19/04/2007, 19h41
  4. [XSLT~FO] formatage des données sur deux colonnes
    Par troisj dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 04/04/2007, 08h59
  5. Comment arbitrer le choix Une base de donnée ou deux ?
    Par medstat2 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 28/03/2006, 16h42

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