Un lecteur de flux RSS pour Android : la base de données intégrée

Après avoir réalisé notre tout premier programme avec Google Android, nous allons nous lancer dans la réalisation d’un projet un peu plus complexe : un lecteur de flux RSS.

Capture d’écran du lecteur de flux RSS

Ce sommaire lecteur de flux permettra juste de s’abonner, se désabonner et d’afficher des flux RSS. Vous pouvez récupérer l’archive incluant sources et binaires si vous souhaitez tester tout de suite le programme.

Présentation de SQLite

La plate-forme Android intègre le système de base de données relationnelle embarquée SQLite. SQLite est un mini SGBD ne nécessitant que peu de ressources, qui offre la possiblité de gérer facilement des bases de données de taille restreinte.

Comme son nom l’indique, SQLite s’utilise par le biais de requêtes SQL. Il est très bien intégré à Android, ce dernier propose un grand nombre de routines qui nous permettront d’interagir très simplement avec les données (par exemple, pour les afficher à l’écran). Nous l’utiliserons dans notre programme pour gérer la liste des flux RSS auxquels l’on est abonné.

Shéma de la base de donnée

Nous utiliserons un shéma assez simple pour notre base de donnée. Elle ne se constituera que deux trois colonnes :

_id url visit

Le champ _id est un nombre entier qui représente l’identifiant de chaque lien, il sera la clef primaire de notre table. Attention son nom est une convention Android / SQLite, veillez toujours à avoir une clef primaire nommée ainsi dans vos tables. Dans le cas contraire vous ne pourrez pas utiliser simplement les curseurs plus tard ! Ce champ est complètement géré par SQLite. Il s’occupera de l’incrémenter automatiquement et de veiller à sa cohérence.

Le champ url de type text contiendra l’adresse du flux RSS.

Le champ visit, qui n’a aucune utilisé dans l’état actuel du programme, pourrait servir à compter le nombre de chargement des flux RSS afin de les classer par ordre d’assiduité par la suite.

La classe Database

Nous allons placer tout ce qui a trait à la base de données dans une classe nommée Database. Après avoir créer un nouveau projet dans Eclipse, créez donc cette classe. Nous utiliserons deux variables qui portent sur tout la classe :

db permet d’agir sur la base de donnée tandis que rss représente le contexte, notre classe principale (nommée RSSreader). La variable rss nous permet d’utiliser les fonctions openDatabase et createDatabase fournies par la plate-forme.

Le constructeur ce contente d’instancier la variable rss et de lancer la procédure d’ouverture de la base de données.

Cette procédure appelle la méthode fournie par Android openDatabase qui nous permettra d’interagir avec la base de donnée depuis la variable db. Si la base de données n’existe pas, on appelle la procédure qui la créera.

La procédure de création de la base de donnée :

La base de donnée est ici privée (MODE_PRIVATE), c’est à dire que seul notre programme pourra y accèder. La création en elle-même revient à envoyer une requête SQL classique de création de table. Nous créons donc notre base de donnée nommée rssreader puis nous insérons un flux d’exemple (celui de ce blog) en appelant la procédure add.

La base de donnée correspond en fait à un fichier texte rangé dans le répertoire /data/data/votre.package/databases/. Pour vous y connecter lancez la commande adb shell dans un terminal. Vous voici avec un shell au sein du système Android (celui de l’émulateur dans notre cas). Il s’agit en fait de BusyBox tournant au-dessus d’un noyau Linux. Pour utilisez la base de donnée en mode shell lancez sqlite3 /data/data/net.lapinblanc.android.rssreader/databases/rssreader. N’oubliez pas les points virgules terminaux à vos requêtes vous les exécuter !

La procédure add prend en paramètre une url et l’ajoute à la base de donnée :

Ici aussi, le code est limpide, il s’agit de simples requêtes SQL comme si l’on agissait sur serveur de base de données classique.

Voyons maintenant comment supprimer un flux de la base de donnée :

Dernière méthode, certainement la plus intéressante, celle qui renvoi la liste des flux dans la base de données :

Elle retourne un curseur, c’est ce curseur qui nous permettra plus tard de placer les flux dans une liste déroulante. Le tableau de chaines de caractères selectionArgs, ici vide, permet de spécifier des critères de sélection, formatés à la manière d’une clause WHERE dans une requête SQL. Le tableau columns permet d’indiquer quels colonnes nous souhaitons sélectionner, à la manière d’un SELECT en SQL. N’oubliez de sélectionner la colonne _id quelque soit votre requête. Sans elle l’utilisation ultérieur des curseurs sera beaucoup plus difficile.

Nous avons maintenant une base de donnée fonctionnelle et très légère sous Android. Dans le prochain article nous verrons comment créer une interface graphique pour gérer ces données.

Note : Merci à Infernal Quark d’avoir corrigé l’affreuse faille par injection SQL que j’avais laissé trainé…

One comment

  1. This certainly very good website you have going here. The situation is quite helpful along with straight to the stage. Ecstatic to read more about your site the next occasion.

Leave a Reply