IUT de Lannion
Dept Informatique
Programmation Android
TP6 - Bases de données
P. Nerzic
2016-17
en tant qu’identifiant alors SQLite en attribue un automatiquement. C’est le rôle de l’option
AUTOINCREMENT (SERIAL dans PostgreSQL).
1.2. Table Avis
On va commencer par définir une classe
TableAvis
qui représente la table Avis (libellé, note,
auteur et date). Relisez le cours de la semaine 6, notamment le transparent intitulé « Classe pour
une table ». L’idée, c’est que cette classe va remplacer le ArrayList des TPs précédents.
Complétez les méthodes de la classe TableAvis (cherchez les TODO) :
•void create(SQLiteDatabase bdd)
Cette méthode effectue la création de la table dans la base de données. Elle exécute une
requête
CREATE TABLE Avis...
à l’aide de la méthode
execSQL
sur le paramètre
bdd
. Les
attributs de la table sont :
–_id de type INTEGER PRIMARY KEY AUTOINCREMENT
–libelle de type TEXT NOT NULL
–note de type REAL
–auteur de type TEXT
–date de type INTEGER. Remarque : le type LONG ou TIMESTAMP n’existe pas.
•void drop(SQLiteDatabase bdd)
Cette méthode supprime totalement la table
Avis
de la base. Utiliser la méthode
execSQL
.
NB: utilisez l’option IF EXISTS afin de parer aux erreurs de double suppression.
•Long insertAvis(SQLiteDatabase bdd, Avis avis)
Cette méthode ajoute l’avis indiqué à la table
Avis
. Vous avez deux manières de le faire.
Soit utiliser la méthode
execSQL
, soit utiliser la méthode
insert
. La seconde est à préférer
car elle retourne l’identifiant du nouveau n-uplet. Il pourrait être repris pour créer une
relation, en tant que clé étrangère dans une autre table.
La méthode
insert
est plus compliquée que
execSQL
car il faut créer un
ContentValues
et mettre les colonnes dedans. Relisez le cours, transparents « Exemples de méthodes » et
« Méthode insert ». Regardez aussi les accesseurs de la classe Avis.
En ce qui concerne la date, on vous suggère d’utiliser la méthode
getTimestamp
de l’avis.
Le principe est de transformer la date en un nombre de millisecondes écoulées depuis le
01/01/1970. Ça s’appelle un timestamp et si vous devez travailler avec des dates, vous
passerez beaucoup de temps à convertir des timestamps en date et vice-versa. Beaucoup de
SGBD possèdent les types DATE,TIME,DATETIME et TIMESTAMP, mais pas sqlite3.
•void updateAvis(SQLiteDatabase bdd, Long id, Avis avis)
Cette méthode modifie le n-uplet identifié par
id
. En fait, c’est presque la même méthode
que la précédente, mais on fait
UPDATE
au lieu de
INSERT
et il faut fournir une clause de
sélection. Vous pouvez également soit utiliser
execSQL
, soit
update
. Relisez le cours. Si
vous utilisez update, n’oubliez pas de convertir l’identifiant en chaîne.
•void deleteAvis(SQLiteDatabase bdd, Long id)
Cette méthode supprime le n-uplet identifié par id.
2