Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
224 L’art du développement Android
● connaître les noms des colonnes avec getColumnNames(), les convertir en numéros de
colonnes grâce à getColumnIndex() et obtenir la valeur d’une colonne donnée de la
ligne courante via des méthodes comme getString(), getInt(), etc. ;
● exécuter à nouveau la requête qui a créé le curseur, avec requery() ;
● libérer les ressources occupées par le curseur avec close().
Voici, par exemple, comment parcourir les entrées de la table widgets rencontrée dans les
extraits précédents :
Cursor result=
db.rawQuery("SELECT ID, name, inventory FROM widgets");
result.moveToFirst();
while (!result.isAfterLast()) {
int id=result.getInt(0);
String name=result.getString(1);
int inventory=result.getInt(2);
// Faire quelque chose de ces valeurs...
result.moveToNext();
}
result.close();
Créer ses propres curseurs
Dans certains cas, vous pouvez vouloir utiliser votre propre sous-classe de Cursor plutôt
que l’implémentation de base fournie par Android. Dans ces situations, vous pouvez vous
servir des méthodes queryWithFactory() et rawQueryWithFactory(), qui prennent
toutes les deux en paramètre une instance de SQLiteDatabase.CursorFactory. Cette
fabrique, comme l’on pourrait s’y attendre, est responsable de la création de nouveaux
curseurs via son implémentation de newCursor().
L’implémentation et l’utilisation de cette approche sont laissées en exercice au lecteur. En
fait, vous ne devriez pas avoir besoin de créer vos propres classes de curseur au cours du
développement d’une application Android classique.
Des données, des données, encore des données
Si vous avez l’habitude de développer avec d’autres SGBDR, vous avez sûrement aussi utilisé
des outils permettant d’inspecter et de manipuler le contenu de la base de données et qui vont
au-delà de l’API. Avec l’émulateur d’Android, vous avez également deux possibilités.
Premièrement, l’émulateur est censé fournir le programme sqlite3, accessible via la
commande adb shell. Lorsque vous avez lancé cette commande, tapez simplement sqlite3
suivi du chemin vers le fichier de votre base de données, qui est généralement de la forme :
/data/data/votre.paquetage.app/databases/nom_base
Livre Android.book Page 224 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
224 L’art du développement Android
● connaître les noms des colonnes avec getColumnNames(), les convertir en numéros de
colonnes grâce à getColumnIndex() et obtenir la valeur d’une colonne donnée de la
ligne courante via des méthodes comme getString(), getInt(), etc. ;
● exécuter à nouveau la requête qui a créé le curseur, avec requery() ;
● libérer les ressources occupées par le curseur avec close().
Voici, par exemple, comment parcourir les entrées de la table widgets rencontrée dans les
extraits précédents :
Cursor result=
db.rawQuery("SELECT ID, name, inventory FROM widgets");
result.moveToFirst();
while (!result.isAfterLast()) {
int id=result.getInt(0);
String name=result.getString(1);
int inventory=result.getInt(2);
// Faire quelque chose de ces valeurs...
result.moveToNext();
}
result.close();
Créer ses propres curseurs
Dans certains cas, vous pouvez vouloir utiliser votre propre sous-classe de Cursor plutôt
que l’implémentation de base fournie par Android. Dans ces situations, vous pouvez vous
servir des méthodes queryWithFactory() et rawQueryWithFactory(), qui prennent
toutes les deux en paramètre une instance de SQLiteDatabase.CursorFactory. Cette
fabrique, comme l’on pourrait s’y attendre, est responsable de la création de nouveaux
curseurs via son implémentation de newCursor().
L’implémentation et l’utilisation de cette approche sont laissées en exercice au lecteur. En
fait, vous ne devriez pas avoir besoin de créer vos propres classes de curseur au cours du
développement d’une application Android classique.
Des données, des données, encore des données
Si vous avez l’habitude de développer avec d’autres SGBDR, vous avez sûrement aussi utilisé
des outils permettant d’inspecter et de manipuler le contenu de la base de données et qui vont
au-delà de l’API. Avec l’émulateur d’Android, vous avez également deux possibilités.
Premièrement, l’émulateur est censé fournir le programme sqlite3, accessible via la
commande adb shell. Lorsque vous avez lancé cette commande, tapez simplement sqlite3
suivi du chemin vers le fichier de votre base de données, qui est généralement de la forme :
/data/data/votre.paquetage.app/databases/nom_base
Livre Android.book Page 224 Dimanche, 8. novembre 2009 12:23 12
