DÉVELOPPEMENT POUR MOBILES
(ANDROID)
Chapitre 6 – Partie II
Bases de données
Dr. KHALIFI Hamid
[Link]@[Link]
Persistance des
données SQLite
PRESENTATION
SQLite est une base de données relationnelles disponible sur
tous les terminaux Android et le SDK fournit des API permettant
au développeur de créer/gérer sa base de données privées.
SQLite fournit un moyen efficace de gérer une petite quantité
de donnée.
Une application peut disposer de plusieurs bases de données (il
n’y a pas de limitation à priori).
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Structure de la BDD :
À l’aide d’une classe d’assistance qui hérite de
SQLiteOpenHelper, on peut maîtriser toutes les relations avec la
base de données, notamment déclarer les noms de la base, des
tables, des colonnes ainsi que la version comme constantes.
Il est nécessaire de définir le constructeur et redéfinir les
méthodes onCreate() et on Upgrade().
onCreate() sera appelée à la création de la base de données et de ses des tables.
onUpgrade() sera utilisée lorsque la BD passe d’une version à une autre version
supérieure.
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Structure de la BDD :
SQLite ne contient que cinq types de données :
NULL pour les données NULL.
INTEGER pour les entiers (sans virgule).
REAL pour les nombres réels (avec virgule).
TEXT pour les chaînes de caractères.
BLOB pour les données brutes, par exemple si vous voulez
mettre une image dans votre base de données.
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Structure de la BDD :
Il est aussi possible de déclarer des contraintes pour chaque
attribut.
On trouve comme contraintes :
PRIMARY KEY pour désigner la clé primaire sur un attribut .
NOT NULL pour indiquer que cet attribut ne peut valoir NULL .
CHECK afin de vérifier que la valeur de cet attribut est cohérente.
DEFAULT sert à préciser une valeur par défaut.
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exemple de création :
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exemple pour une BDD existante:
Pour une base de données déjà existante, la classe d’assistance
doit hériter de SQLiteAssetHelper :
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Manipulation de la BDD :
SQLiteDatabase : Classe permettant de manipuler une base de
données SQLite sous Android.
Elle dispose d’un ensemble de méthodes permettant d’accéder
à la base en lecture et en écriture:
◦ Open() : Ouvrir la base de données en lecture ou en écriture
◦ Query() : Pour exécuter des requêtes SQL
◦ Update () : Pour modification
◦ Close() : Fermer une connexion à la base
Plus spécifiquement elle propose des méthodes génériques
pour les requêtes CRUD : Create, read, update, delete.
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Manipulation de la BDD :
Pour réaliser des écritures ou lectures, on utilise les
méthodes getWritableDatabase() et getReadableDatabase()
qui renvoient une instance de SQLiteDatabase.
Sur cet objet, une requête peut être exécutée via la
méthode query()
ou rawQuery():
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Parcourir le Résultat :
La méthode query() et rawQuery() permettent de retourner un objet Cursor
qui pointe sur un ensemble d’enregistrements résultat d’une requête.
Ce Cursor permet de traiter la réponse (en lecture ou écriture), via ces
méthodes :
int getCount() : Retourne le nombre de lignes renvoyés par le curseur.
boolean moveToFirst() : déplace le curseur à la première ligne.
boolean moveToNext() : pour aller à la ligne suivante. Par défaut on
commence à la ligne -1, donc, en utilisant un moveToNext() sur un tout
nouveau Cursor, on passe à la première ligne.
boolean moveToPrevious() :pour aller à l'entrée précédente.
boolean moveToPosition(int position) : pour aller à la position voulue.
int getPosition() : pour récupérer la position actuelle.
void close() : Fermer le curseur.
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Extraire les Champs Résultats :
Les curseurs, Objet représentant le résultat d'une requête
– Liste des enregistrements (et colonnes) sélectionnés
applet 225
const 255
mapreduce 100
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Extraire les Champs Résultats :
L’objet Cursor pointe sur un enregistrement résultat à un moment donné.
Le Cursor peut accéder aux champs de l’enregistrement pointé par les
méthodes de la forme : getXXX (N°Champ) avec XXX étant le type de la
donnée de ce champ (Float, String, Int, Double, ...)
Exemple :
getInt(int columnIndex) : retourne la valeur (int) de la colonne passée
en paramètre.
getString(int columnIndex) : retourne la valeur (String) de la colonne
passée en paramètre.
getColumnName(int) : donne le nom de la colonne désignée par
l'index.
...
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exemple :
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exercice:
Cursor curseur = bd. rawQuery("select * from table", null);
[Link]();
[Link]();
table
[Link]("word");
[Link](4);
[Link](3);
[Link](2);
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exercice - Correction
[Link]();
La position du curseur n’est pas initialisée
!
tant qu’un déplacement n’a pas été effectué
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exercice - Correction
[Link]();
La position du curseur n’est pas initialisée
!
tant qu’un déplacement n’a pas été effectué
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exercice - Correction
[Link]();
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exercice - Correction
[Link]("word");
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exercice - Correction
[Link](4);
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exercice - Correction
[Link](3);
100
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Exercice - Correction
[Link](2);
user1
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Persistance des
données SQLite
Bonnes pratiques :
N’oubliez jamais de fermer la base de données après chaque
Utilisation.
Toujours fermer également les curseurs.
Vérifiez toujours qu’un curseur a au moins une ligne avant de le
parcourir.
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID