Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 27
Utilisation d’un fournisseur de contenu (content provider) 285
● La méthode insert() prend en paramètre une Uri de collection et une structure
ContentValues décrivant l’ensemble de données à placer dans la ligne.
● La méthode bulkInsert() prend en paramètre une Uri de collection et un tableau de
structures ContentValues pour remplir plusieurs lignes à la fois.
La méthode insert() renvoie une Uri que vous pourrez manipuler ensuite. La méthode
bulkInsert() renvoie le nombre de lignes créées ; vous devrez effectuer une requête pour
obtenir à nouveau les données que vous venez d’insérer.
Voici, par exemple, un extrait de ConstantsBrowser qui insère une nouvelle constante au
fournisseur de contenu à partir d’un DialogWrapper fournissant le nom et la valeur de
cette constante :
private void processAdd(DialogWrapper wrapper) {
ContentValues values=new ContentValues(2);
values.put(Provider.Constants.TITLE, wrapper.getTitle());
values.put(Provider.Constants.VALUE, wrapper.getValue());
getContentResolver().insert(Provider.Constants.CONTENT_URI,
values);
constantsCursor.requery();
}
Comme nous avons déjà un Cursor en suspens pour le contenu de ce fournisseur, nous
appelons requery() sur celui-ci pour mettre à jour son contenu. Cet appel, à son tour,
mettra à jour le SimpleCursorAdapter qui enveloppe éventuellement le Cursor – et ces
modifications seront répercutées sur les widgets de sélection (ListView, par exemple) qui
utilisent cet adaptateur.
Pour supprimer une ou plusieurs lignes d’un fournisseur de contenu, utilisez la méthode
delete() de ContentResolver. Elle fonctionne comme l’instruction DELETE de SQL et
prend trois paramètres :
1. L’Uri représentant la collection (ou l’instance) que vous voulez supprimer.
2. Une contrainte fonctionnant comme une clause WHERE, qui sert à déterminer les
lignes qui doivent être supprimées.
3. Un éventuel ensemble de paramètres qui remplaceront les marqueurs d’emplacements
apparaissant dans la contrainte.
Attention aux BLOB !
Les BLOB (Binary large objects) existent dans de nombreux SGBDR, dont SQLite. Le
modèle Android, cependant, préfère gérer ces volumes de données via leurs propres Uri.
Livre Android.book Page 285 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 27
Utilisation d’un fournisseur de contenu (content provider) 285
● La méthode insert() prend en paramètre une Uri de collection et une structure
ContentValues décrivant l’ensemble de données à placer dans la ligne.
● La méthode bulkInsert() prend en paramètre une Uri de collection et un tableau de
structures ContentValues pour remplir plusieurs lignes à la fois.
La méthode insert() renvoie une Uri que vous pourrez manipuler ensuite. La méthode
bulkInsert() renvoie le nombre de lignes créées ; vous devrez effectuer une requête pour
obtenir à nouveau les données que vous venez d’insérer.
Voici, par exemple, un extrait de ConstantsBrowser qui insère une nouvelle constante au
fournisseur de contenu à partir d’un DialogWrapper fournissant le nom et la valeur de
cette constante :
private void processAdd(DialogWrapper wrapper) {
ContentValues values=new ContentValues(2);
values.put(Provider.Constants.TITLE, wrapper.getTitle());
values.put(Provider.Constants.VALUE, wrapper.getValue());
getContentResolver().insert(Provider.Constants.CONTENT_URI,
values);
constantsCursor.requery();
}
Comme nous avons déjà un Cursor en suspens pour le contenu de ce fournisseur, nous
appelons requery() sur celui-ci pour mettre à jour son contenu. Cet appel, à son tour,
mettra à jour le SimpleCursorAdapter qui enveloppe éventuellement le Cursor – et ces
modifications seront répercutées sur les widgets de sélection (ListView, par exemple) qui
utilisent cet adaptateur.
Pour supprimer une ou plusieurs lignes d’un fournisseur de contenu, utilisez la méthode
delete() de ContentResolver. Elle fonctionne comme l’instruction DELETE de SQL et
prend trois paramètres :
1. L’Uri représentant la collection (ou l’instance) que vous voulez supprimer.
2. Une contrainte fonctionnant comme une clause WHERE, qui sert à déterminer les
lignes qui doivent être supprimées.
3. Un éventuel ensemble de paramètres qui remplaceront les marqueurs d’emplacements
apparaissant dans la contrainte.
Attention aux BLOB !
Les BLOB (Binary large objects) existent dans de nombreux SGBDR, dont SQLite. Le
modèle Android, cependant, préfère gérer ces volumes de données via leurs propres Uri.
Livre Android.book Page 285 Dimanche, 8. novembre 2009 12:23 12
