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 :

Problème utilisation for pour une requête


Sujet :

Android

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Problème utilisation for pour une requête
    Bonjour, je suis en train de réaliser le jeu du taquin sur Android.
    Pour gérer les scores j'utilise SQLite et je rencontre un petit soucis.

    Je désire afficher seulement les 5 meilleurs scores dans mon écran des meilleurs scores
    Pour cela j'ai réalisé ceci.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public Score[] cinqPlusPetitTemps()
    	{
    		Cursor c = bdd.rawQuery(REQUETE_5_PLUS_PETIT,null);	
     
    		return cursorToTabScore(c);
     
     
    	}
    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
    private Score[] cursorToTabScore(Cursor c){
    		//si aucun élément n'a été retourné dans la requête, on renvoie null
    		if (c.getCount() == 0)
    			return null;
     
    		//Sinon on se place sur le premier élément
    		c.moveToFirst();
     
     
    		Score l1 = new Score();
    		Score l2 = new Score();
    		Score l3 = new Score();
    		Score l4 = new Score();
    		Score l5 = new Score();	
     
    		l1.setId(c.getInt(NUM_COL_ID));
    		l1.setTemps(c.getLong(NUM_COL_TEMPS));
    		l1.setPseudo(c.getString(NUM_COL_PSEUDO));
     
    		c.moveToNext();
     
    		l2.setId(c.getInt(NUM_COL_ID));
    		l2.setTemps(c.getLong(NUM_COL_TEMPS));
    		l2.setPseudo(c.getString(NUM_COL_PSEUDO));
     
    		c.moveToNext();
     
    		l3.setId(c.getInt(NUM_COL_ID));
    		l3.setTemps(c.getLong(NUM_COL_TEMPS));
    		l3.setPseudo(c.getString(NUM_COL_PSEUDO));
     
    		c.moveToNext();
     
    		l4.setId(c.getInt(NUM_COL_ID));
    		l4.setTemps(c.getLong(NUM_COL_TEMPS));
    		l4.setPseudo(c.getString(NUM_COL_PSEUDO));
     
    		c.moveToNext();
     
    		l5.setId(c.getInt(NUM_COL_ID));
    		l5.setTemps(c.getLong(NUM_COL_TEMPS));
    		l5.setPseudo(c.getString(NUM_COL_PSEUDO));
     
    		Score[] bibli = new Score[]{l1,l2, l3, l4, l5};
    		//on lui affecte toutes les infos grâce aux infos contenues dans le Cursor
     
    		//On ferme le cursor
    		c.close();
     
    		//On retourne le livre
    		return bibli;
    	}
    Malheureusement ce ne marche pas si il y a moins de 5 scores dans la base.

    J'ai donc voulu utilisé un for.

    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
    private Score[] cursorToTabScore(Cursor c){
    		//si aucun élément n'a été retourné dans la requête, on renvoie null
    		if (c.getCount() == 0)
    			return null;
     
    		//Sinon on se place sur le premier élément
    		c.moveToFirst();
     
                   Score[] bibli = new Score[5];
     
     
                  for (int i = 0; i<5;i++)
    		{
     
     
    			bibli[i].setId(c.getInt(NUM_COL_ID));
    			bibli[i].setTemps(c.getLong(NUM_COL_TEMPS));
    			bibli[i].setPseudo(c.getString(NUM_COL_PSEUDO));
     
    			c.moveToNext();
     
     
    		}
                    c.close();
     
    		//On retourne le livre
    		return bibli;
    Cette méthode plante des le premier bibli[i].setId(c.getInt(NUM_COL_ID));

    Ensuite j'ai essayé ceci

    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
    private Score[] cursorToTabScore(Cursor c){
    		//si aucun élément n'a été retourné dans la requête, on renvoie null
    		if (c.getCount() == 0)
    			return null;
     
    		//Sinon on se place sur le premier élément
    		c.moveToFirst();
     
                      Score[] bibli = new Score[5];
                     Score sc = new Score();
     
                  for (int i = 0; i<5;i++)
    		{
     
     
    			sc.setId(c.getInt(NUM_COL_ID));
    			sc.setTemps(c.getLong(NUM_COL_TEMPS));
    			sc.setPseudo(c.getString(NUM_COL_PSEUDO));
     
                             bibli[i]=sc; 
     
    			c.moveToNext();
     
     
    		}
                   c.close();
     
    		//On retourne le livre
    		return bibli;
    Tout mon tableau possède alors les mêmes valeurs, la dernière des 5 que je veux afficher.

    Merci de m'indiquer si j'ai fais des erreurs dans mon for.

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    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
     
    private ArrayList<Score> cursorToTabScore(Cursor c){
      //si aucun élément n'a été retourné dans la requête, on renvoie null
      if (c.getCount() == 0)
        return null;
     
      //Sinon on se place sur le premier élément
      c.moveToFirst();
      ArrayList<Score> bibli = new ArrayList<Score>();
      //Score[] bibli = new Score[5];
      int i = 0;
      do {
        Score aScore = new Score();
        aScore.setId(c.getInt(NUM_COL_ID));
        aScore.setTemps(c.getLong(NUM_COL_TEMPS));
        aScore.setPseudo(c.getString(NUM_COL_PSEUDO));
        bibli.add(aScore);
        i++;
      } while(c.moveToNext() && i < 5);          
     
      c.close();
     
      //On retourne le livre
      return bibli;
    }
    Ca devrait te retourner au mieux les 5 scores (si il y en a au moins 5).
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Ok merci, c'est ce que j'ai fais et cela marche très bien.

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

Discussions similaires

  1. [MySQL] Problème de jointure pour une requête
    Par HAbroc dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/08/2014, 13h05
  2. [AC-2010] Problèmes de critères pour une requête.
    Par Mathieu_31 dans le forum Access
    Réponses: 1
    Dernier message: 24/02/2013, 07h51
  3. Utilisation INDEX pour une requête
    Par k o D dans le forum Requêtes
    Réponses: 5
    Dernier message: 19/07/2012, 08h47
  4. problème de syntaxe delphi pour une requête sql
    Par socooooool dans le forum Bases de données
    Réponses: 12
    Dernier message: 07/07/2006, 16h53
  5. Problème tableau pour une requête
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2005, 20h21

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