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 curseur SQLite


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Cisco
    Inscrit en
    Juillet 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Cisco
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 71
    Par défaut Problème curseur SQLite
    Bonjour,
    Je fais un check afin d'obtenir mes objets Promotions favorites dans un tableau. J'ai essayé de le faire (à partir de ma classe qui contrôle mes Promotions PromotionsBDD de ma base de données SQLite) comme 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    public ArrayList<Promotion> getListPromotionsFavorites()
    		{
    			String[] columns = new String[] {"ID", "RATING", "TITLE", "COMPANY_ID","AVAILABLEDATE", "DESCRIPTION", "SETONFAVORITE"};
     
    			Cursor objCursor = bdd.query(TABLE_PROMOTIONS, columns,"SETONFAVORITE = ?",new String[]{"true"},null,null,null,null);
     
    			int id = objCursor.getColumnIndex("ID");
    			int rating = objCursor.getColumnIndex("RATING");
    			int title = objCursor.getColumnIndex("TITLE");
    			int companyid = objCursor.getColumnIndex("COMPANY_ID");
    			int availabledate = objCursor.getColumnIndex("AVAILABLEDATE");
    			int description = objCursor.getColumnIndex("DESCRIPTION");
    			int setonfavorite = objCursor.getColumnIndex("SETONFAVORITE");
     
    			ArrayList<Promotion> promoFavoriteArray = new ArrayList<Promotion>();
    			objCursor.moveToFirst();// position sur la première ligne
     
    			if (objCursor != null) 
    			{
    				if (objCursor.isFirst())
    				{
    					do 
    					{
    						String resultid = objCursor.getString(id);
    						String resultrating = objCursor.getString(rating);
    						String resultitle = objCursor.getString(title);
    						int resultcompanyid = objCursor.getInt(companyid);
    						String resultavailbledate = objCursor.getString(availabledate);
    						String resultdescription = objCursor.getString(description);
    						String resultsetonfavorite = objCursor.getString(setonfavorite);
     
    						Promotion promo = new Promotion(resultid, resultrating, resultitle, resultcompanyid,resultavailbledate,resultdescription, resultsetonfavorite);
    						promoFavoriteArray.add(promo);
    						objCursor.moveToNext();//positionnement sur le suivant
    					}
    					while(objCursor.isLast());
    				}
    			}
    			objCursor.deactivate();
    			objCursor.close();
    		return promoFavoriteArray;
    	}
    cela marche plutôt bien mais sans savoir pourquoi cela marche pour 1 et 2 entrées Promotion dans mon promoFavoriteArray mais lorsque mon tableau est supérieur celui ci devient égal a 1 et me retourne le premier élément qui était dans mon tableau..

  2. #2
    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
    Le parcours d'un cursor est général fait de la manière suivante:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Cursor cursor = ....;
     
    boolean hasMore = cursor.moveToFirst();
    while (hasMore) {
           ... do something with cursor ...
        hasMore = cursor.moveToNext();
    }


    Parceque là... tu répètes le 'do' tant que le cursor "isLast" .... donc ca ne marche avec 1 row (le premier do), avec 2 (le premier do, le second is last => ca passe), mais avec 3 rows, le 2eme passage ne sera pas fait (on n'a jamais la condition isLast() )

  3. #3
    Membre confirmé
    Homme Profil pro
    Cisco
    Inscrit en
    Juillet 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Cisco
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 71
    Par défaut
    Pourquoi faire simple lorsque l'on peut faire compliquer hein ?!

    Merci beaucoup encore Nicroman !! Tu es de tres bons conseils en ce moment

  4. #4
    Membre chevronné Avatar de srvremi
    Homme Profil pro
    Directeur d'école d'ingénieurs
    Inscrit en
    Mars 2002
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur d'école d'ingénieurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 554
    Par défaut
    Sinon c'est possible avec un do while, mais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Cursor cursor = ....;
     
    if (cursor.moveToFirst()) {
       do {
           // do something with cursor ...
       } while (cursor.moveToNext());
    }
    @+
    Rémi

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

Discussions similaires

  1. Problème pour transformer curseur SQLite en objet
    Par Agriesean dans le forum Android
    Réponses: 6
    Dernier message: 26/09/2011, 15h08
  2. Problème curseur READ ONLY
    Par yal001 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/04/2007, 19h22
  3. Problème curseur de saisie sous Access
    Par anonymenet dans le forum Access
    Réponses: 2
    Dernier message: 27/06/2006, 10h55
  4. Problème Curseur SQL SERVER
    Par Yanmeunier dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/12/2005, 19h19
  5. [C#] Problème curseur
    Par chimay62 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/08/2005, 16h06

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