Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 20
Accès et gestion des bases de données locales 221
La méthode update() prend en paramètre le nom de la table, un objet ContentValues
contenant les colonnes et leurs nouvelles valeurs et, éventuellement, une clause WHERE
et une liste de paramètres qui remplaceront les marqueurs présents dans celle-ci. update()
n’autorisant que des valeurs fixes pour mettre à jour les colonnes, vous devrez utiliser
execSQL() si vous souhaitez affecter des résultats calculés.
La clause WHERE et la liste de paramètres fonctionnent comme les paramètres positionnels
qui existent également dans d’autres API de SQL :
// remplacements est une instance de ContentValues
String[] params=new String[] {"snicklefritz"};
db.update("widgets", remplacements, "name=?", params);
La méthode delete() fonctionne comme update() et prend en paramètre le nom de la
table et, éventuellement, une clause WHERE et une liste des paramètres positionnels pour
cette clause.
Le retour de vos requêtes
Comme pour INSERT, UPDATE et DELETE, vous pouvez utiliser plusieurs approches
pour récupérer les données d’une base SQLite avec SELECT :
● rawQuery() permet d’exécuter directement une instruction SELECT.
● query() permet de construire une requête à partir de ses différentes composantes.
Un sujet de confusion classique est la classe SQLiteQueryBuilder et le problème des
curseurs et de leurs fabriques.
Requêtes brutes
La solution la plus simple, au moins du point de vue de l’API, consiste à utiliser
rawQuery() en lui passant simplement la requête SELECT. Cette dernière peut contenir
des paramètres positionnels qui seront remplacés par les éléments du tableau passé en
second paramètre. Voici un exemple :
Cursor c=db.rawQuery("SELECT name FROM sqlite_master
WHERE type=’table’
AND name=’constantes’", null);
Ici, nous interrogeons une table système de SQLite (sqlite_master) pour savoir si la
table constantes existe déjà. La valeur renvoyée est un Cursor qui dispose de méthodes
permettant de parcourir le résultat (voir la section "Utilisation des curseurs").
Si vos requêtes sont bien intégrées à votre application, c’est une approche très simple. En
revanche, elle se complique lorsqu’une requête comprend des parties dynamiques que les
paramètres positionnels ne peuvent plus gérer. Si l’ensemble de colonnes que vous voulez
Livre Android.book Page 221 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 236/391

Suivant