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 223
SQLiteQueryBuilder qb=new SQLiteQueryBuilder();
qb.setTables(getTableName());
if (isCollectionUri(url)) {
qb.setProjectionMap(getDefaultProjection());
}
else {
qb.appendWhere(getIdColumnName()+"="+url.getPathSegments().get(1));
}
String orderBy;
if (TextUtils.isEmpty(sort)) {
orderBy=getDefaultSortOrder();
} else {
orderBy=sort;
}
Cursor c=qb.query(db, projection, selection, selectionArgs,
null, null, orderBy);
c.setNotificationUri(getContext().getContentResolver(), url);
return c;
}
Les fournisseurs de contenu (content provider) seront expliqués en détail dans la
cinquième partie de ce livre. Ici, nous pouvons nous contenter de remarquer que :
1. Nous construisons un objet SQLiteQueryBuilder.
2. Nous lui indiquons la table concernée par la requête avec setTables(getTableName()).
3. Soit nous lui indiquons l’ensemble de colonnes à renvoyer par défaut (avec setProjectionMap()), soit nous lui donnons une partie de clause WHERE afin d’identifier
une ligne précise de la table à partir d’un identifiant extrait de l’URI fournie à l’appel
de query() (avec appendWhere()).
4. Enfin, nous lui demandons d’exécuter la requête en mélangeant les valeurs de départ
avec celles fournies à query() (qb.query(db, projection, selection, selectionArgs, null, null, orderBy)).
Au lieu de faire exécuter directement la requête par l’objet SQLiteQueryBuilder, nous
aurions pu appeler buildQuery() pour la produire et renvoyer l’instruction SELECT dont
nous avions besoin ; nous aurions alors pu l’exécuter nous-mêmes.
Utilisation des curseurs
Quelle que soit la façon dont vous exécutez la requête, vous obtiendrez un Cursor en retour.
Il s’agit de la version Android/SQLite des curseurs de bases de données, un concept utilisé par
de nombreux SGBDR. Avec ce curseur, vous pouvez effectuer les opérations suivantes :
● connaître le nombre de lignes du résultat grâce à getCount() ;
● parcourir les lignes du résultat avec moveToFirst(), moveToNext() et isAfterLast() ;
Livre Android.book Page 223 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 20
Accès et gestion des bases de données locales 223
SQLiteQueryBuilder qb=new SQLiteQueryBuilder();
qb.setTables(getTableName());
if (isCollectionUri(url)) {
qb.setProjectionMap(getDefaultProjection());
}
else {
qb.appendWhere(getIdColumnName()+"="+url.getPathSegments().get(1));
}
String orderBy;
if (TextUtils.isEmpty(sort)) {
orderBy=getDefaultSortOrder();
} else {
orderBy=sort;
}
Cursor c=qb.query(db, projection, selection, selectionArgs,
null, null, orderBy);
c.setNotificationUri(getContext().getContentResolver(), url);
return c;
}
Les fournisseurs de contenu (content provider) seront expliqués en détail dans la
cinquième partie de ce livre. Ici, nous pouvons nous contenter de remarquer que :
1. Nous construisons un objet SQLiteQueryBuilder.
2. Nous lui indiquons la table concernée par la requête avec setTables(getTableName()).
3. Soit nous lui indiquons l’ensemble de colonnes à renvoyer par défaut (avec setProjectionMap()), soit nous lui donnons une partie de clause WHERE afin d’identifier
une ligne précise de la table à partir d’un identifiant extrait de l’URI fournie à l’appel
de query() (avec appendWhere()).
4. Enfin, nous lui demandons d’exécuter la requête en mélangeant les valeurs de départ
avec celles fournies à query() (qb.query(db, projection, selection, selectionArgs, null, null, orderBy)).
Au lieu de faire exécuter directement la requête par l’objet SQLiteQueryBuilder, nous
aurions pu appeler buildQuery() pour la produire et renvoyer l’instruction SELECT dont
nous avions besoin ; nous aurions alors pu l’exécuter nous-mêmes.
Utilisation des curseurs
Quelle que soit la façon dont vous exécutez la requête, vous obtiendrez un Cursor en retour.
Il s’agit de la version Android/SQLite des curseurs de bases de données, un concept utilisé par
de nombreux SGBDR. Avec ce curseur, vous pouvez effectuer les opérations suivantes :
● connaître le nombre de lignes du résultat grâce à getCount() ;
● parcourir les lignes du résultat avec moveToFirst(), moveToNext() et isAfterLast() ;
Livre Android.book Page 223 Dimanche, 8. novembre 2009 12:23 12
