2010-06-24 3 views
4

J'ai une requête, (j'utilise rawQuery())Android requête SQLite et l'aide du curseur pour faire face à plusieurs lignes

SELECT * FROM <table> 

Je puis stocker ce qu'il retourne à l'aide d'un curseur. De ce que je veux faire est, commencez à la première ligne donc .. cursor.moveToFirst() puis prenez chaque colonne, colonne par colonne et stockez sa valeur particulière dans une variable. Je veux ensuite passer à la rangée suivante et faire la même chose. Donc je suppose que ma question est Comment est-ce que j'aurais le curseur pour traiter plusieurs colonnes?

Merci,

Répondre

14

je pourrais être absent quelque chose ici, ne vous avez une boucle imbriquée.

Les cycles de boucle externe à travers chaque dossiers:

while (cursor.moveToNext()) { 
    ... 
    // inner loop here 
    ... 
} 

et la boucle interne serait de faire défiler chaque colonne

for (i=0; i<cursor.getColumnCount(); i++) { 
    ... 
    String var1 = cursor.getString(i); 
    ... 
} 
+3

Je sais que cela est déjà accepté, mais un 'do {} while (curseur .moveToNext()); 'fonctionne mieux, parce que si vous vérifiez .moveToNext en premier, vous sautez le premier enregistrement ... Appris de l'expérience ... – AndyD273

+4

Etes-vous sûr? Un curseur est généralement assis à la position -1 lorsqu'il est renvoyé et l'appel de moveToNext() le place sur la première ligne. De même, avec votre logique, le bloc de code à l'intérieur de do {} s'exécutera toujours au moins une fois, même si le curseur ne contient aucun enregistrement. –

Questions connexes