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 219
Commencer par le début
Android ne fournit aucune base de données de son propre chef. Si vous voulez utiliser
SQLite, vous devez créer votre propre base, puis la remplir avec vos tables, vos index et
vos données.
Pour créer et ouvrir une base de données, la meilleure solution consiste à créer une sousclasse de SQLiteOpenHelper. Cette classe enveloppe tout ce qui est nécessaire à la création et à la mise à jour d’une base, selon vos spécifications et les besoins de votre application.
Cette sous-classe aura besoin de trois méthodes :
● Un constructeur qui appelle celui de sa classe parente et qui prend en paramètre le
Context (une Activity), le nom de la base de données, une éventuelle fabrique de
curseur (le plus souvent, ce paramètre vaudra null) et un entier représentant la version
du schéma de la base.
● onCreate(), à laquelle vous passerez l’objet SQLiteDatabase que vous devrez
remplir avec les tables et les données initiales que vous souhaitez.
● onUpgrade(), à laquelle vous passerez un objet SQLiteDatabase ainsi que l’ancien et
le nouveau numéro de version. Pour convertir une base d’un ancien schéma à un
nouveau, l’approche la plus simple consiste à supprimer les anciennes tables et à en
créer de nouvelles. Le Chapitre 28 donnera tous les détails nécessaires.
Le reste de ce chapitre est consacré à la création et à la suppression des tables, à l’insertion
des données, etc. Il présentera également un exemple de sous-classe de SQLiteOpenHelper.
Pour utiliser votre sous-classe, créez une instance et demandez-lui d’appeler getReadableDatabase() ou getWriteableDatabase() selon que vous vouliez ou non modifier son
contenu :
db=(new DatabaseHelper(getContext())).getWritableDatabase();
return (db == null) ? false : true;
Cet appel renverra une instance de SQLiteDatabase qui vous servira ensuite à interroger
ou à modifier la base de données.
Lorsque vous avez fini de travailler sur cette base (lorsque l’activité est fermée, par exemple), il suffit d’appeler la méthode close() de cette instance pour libérer votre connexion.
Mettre la table
Pour créer des tables et des index, vous devez appeler la méthode execSQL() de l’objet
SQLiteDatabase en lui passant l’instruction du LDD (langage de définition des données)
que vous voulez exécuter. En cas d’erreur, cette méthode renvoie null.
Livre Android.book Page 219 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 219
Commencer par le début
Android ne fournit aucune base de données de son propre chef. Si vous voulez utiliser
SQLite, vous devez créer votre propre base, puis la remplir avec vos tables, vos index et
vos données.
Pour créer et ouvrir une base de données, la meilleure solution consiste à créer une sousclasse de SQLiteOpenHelper. Cette classe enveloppe tout ce qui est nécessaire à la création et à la mise à jour d’une base, selon vos spécifications et les besoins de votre application.
Cette sous-classe aura besoin de trois méthodes :
● Un constructeur qui appelle celui de sa classe parente et qui prend en paramètre le
Context (une Activity), le nom de la base de données, une éventuelle fabrique de
curseur (le plus souvent, ce paramètre vaudra null) et un entier représentant la version
du schéma de la base.
● onCreate(), à laquelle vous passerez l’objet SQLiteDatabase que vous devrez
remplir avec les tables et les données initiales que vous souhaitez.
● onUpgrade(), à laquelle vous passerez un objet SQLiteDatabase ainsi que l’ancien et
le nouveau numéro de version. Pour convertir une base d’un ancien schéma à un
nouveau, l’approche la plus simple consiste à supprimer les anciennes tables et à en
créer de nouvelles. Le Chapitre 28 donnera tous les détails nécessaires.
Le reste de ce chapitre est consacré à la création et à la suppression des tables, à l’insertion
des données, etc. Il présentera également un exemple de sous-classe de SQLiteOpenHelper.
Pour utiliser votre sous-classe, créez une instance et demandez-lui d’appeler getReadableDatabase() ou getWriteableDatabase() selon que vous vouliez ou non modifier son
contenu :
db=(new DatabaseHelper(getContext())).getWritableDatabase();
return (db == null) ? false : true;
Cet appel renverra une instance de SQLiteDatabase qui vous servira ensuite à interroger
ou à modifier la base de données.
Lorsque vous avez fini de travailler sur cette base (lorsque l’activité est fermée, par exemple), il suffit d’appeler la méthode close() de cette instance pour libérer votre connexion.
Mettre la table
Pour créer des tables et des index, vous devez appeler la méthode execSQL() de l’objet
SQLiteDatabase en lui passant l’instruction du LDD (langage de définition des données)
que vous voulez exécuter. En cas d’erreur, cette méthode renvoie null.
Livre Android.book Page 219 Dimanche, 8. novembre 2009 12:23 12
