Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
292 L’art du développement Android
getContext().getContentResolver().notifyChange(uri, null);
return uri;
}
throw new SQLException("Echec de l’insertion dans " + url);
}
La technique est la même que précédemment : pour réaliser l’insertion, on utilise les particularités du fournisseur, plus les données à insérer. Les points suivants méritent d’être
notés :
● Une insertion ne peut se faire que dans une Uri de collection, c’est la raison pour
laquelle on teste le paramètre avec isCollectionUri().
● Le fournisseur sachant quelles sont les colonnes requises (avec getRequiredColumns()),
nous les parcourons et nous vérifions que les valeurs fournies leur correspondent.
● C’est au fournisseur de fournir les valeurs par défaut (via populateDefaultValues())
pour les colonnes qui ne sont pas fournies à l’appel d’insert() et qui ne sont pas
automatiquement gérées par la définition de la table SQLite.
update()
La méthode update() prend en paramètre l’Uri de l’instance ou de la collection à modifier, une structure ContentValues contenant les nouvelles valeurs, une chaîne correspondant à une clause WHERE de SQL et un tableau de chaînes contenant les valeurs qui
remplaceront les marqueurs d’emplacement dans la clause WHERE. Il vous appartient
d’identifier l’instance ou les instances à modifier (en utilisant l’Uri et la clause WHERE)
puis de remplacer leurs valeurs actuelles par celles qui ont été fournies en paramètre.
Si vous utilisez SQLite comme système de stockage, il suffit de transmettre tous les paramètres à la méthode update() de la base, même si cet appel variera légèrement selon que
vous modifiez une ou plusieurs instances.
Voici, par exemple, l’implémentation de la méthode update() de Provider :
@Override
public int update(Uri url, ContentValues values, String where,
String[] whereArgs) {
int count;
if (isCollectionUri(url)) {
count=db.update(getTableName(), values, where, whereArgs);
}
else {
String segment=url.getPathSegments().get(1);
count=db
.update(getTableName(), values, getIdColumnName() + "="
+ segment
Livre Android.book Page 292 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
292 L’art du développement Android
getContext().getContentResolver().notifyChange(uri, null);
return uri;
}
throw new SQLException("Echec de l’insertion dans " + url);
}
La technique est la même que précédemment : pour réaliser l’insertion, on utilise les particularités du fournisseur, plus les données à insérer. Les points suivants méritent d’être
notés :
● Une insertion ne peut se faire que dans une Uri de collection, c’est la raison pour
laquelle on teste le paramètre avec isCollectionUri().
● Le fournisseur sachant quelles sont les colonnes requises (avec getRequiredColumns()),
nous les parcourons et nous vérifions que les valeurs fournies leur correspondent.
● C’est au fournisseur de fournir les valeurs par défaut (via populateDefaultValues())
pour les colonnes qui ne sont pas fournies à l’appel d’insert() et qui ne sont pas
automatiquement gérées par la définition de la table SQLite.
update()
La méthode update() prend en paramètre l’Uri de l’instance ou de la collection à modifier, une structure ContentValues contenant les nouvelles valeurs, une chaîne correspondant à une clause WHERE de SQL et un tableau de chaînes contenant les valeurs qui
remplaceront les marqueurs d’emplacement dans la clause WHERE. Il vous appartient
d’identifier l’instance ou les instances à modifier (en utilisant l’Uri et la clause WHERE)
puis de remplacer leurs valeurs actuelles par celles qui ont été fournies en paramètre.
Si vous utilisez SQLite comme système de stockage, il suffit de transmettre tous les paramètres à la méthode update() de la base, même si cet appel variera légèrement selon que
vous modifiez une ou plusieurs instances.
Voici, par exemple, l’implémentation de la méthode update() de Provider :
@Override
public int update(Uri url, ContentValues values, String where,
String[] whereArgs) {
int count;
if (isCollectionUri(url)) {
count=db.update(getTableName(), values, where, whereArgs);
}
else {
String segment=url.getPathSegments().get(1);
count=db
.update(getTableName(), values, getIdColumnName() + "="
+ segment
Livre Android.book Page 292 Dimanche, 8. novembre 2009 12:23 12
