DB Sqlite v2
DB Sqlite v2
DB Sqlite v2
Séance 4
Base de données SQlite
S Q L i te
Création et mise à jour
Types de données pour S Q L i te
Création de table avec S Q L i te
Exécution de requêtes
Récupéreration de la base
Mise à jour
Insertion
Suppression
Modification
Sélection
Les curseurs
2
L'adaptateur pour les curseurs
FST/ FES SICOM/S3 2
Développement Android/SQlite
INTRODU C TION
SQLite permet de créér des bases de données légères internes aux
applications Android
SQLite ne nécessite pas de serveur pour fonctionner, ce qui signifie que son
exécution se fait dans le même processus que celui de l'application.
Par conséquent, une opération massive lancée dans la base de données aura
des conséquences visibles sur les performances de votre application.
SQLite a été inclus dans le cœur même d'Android, c'est pourquoi chaque application
peut avoir sa propre base.
De manière générale, les bases de données sont stockées dans les répertoires de la
forme /data/data/<package>/databases.
L a solution la plus évidente est d'utiliser une classe qui nous aidera à maîtriser
toutes les relations avec la base de données.
C'est dans cette méthode que vous devrez lancer les instructions pour créer les
différentes tables et éventuellement les remplir avec des données initiales.
5
⚫ B L O B pour les données brutes, par exemple si vous voulez mettre une image
dans votre base de données
8
C R É AT I O N D E TA B L E A V E C SQLITE
La création de table se fait avec une syntaxe très naturelle :
C REAT E TA BLE n om_de _la _table ( n om_du_cha mp_1 t ype {con t ra inte s },
nom_du_cha mp_2 t ype {con t raintes},
…);
C R E AT E TA B L E nom_de_la_table (
champ1 I N T E G E R P R I M A RY K E Y,
champ2 T E XT NOT NUL L ,
champ3 R E A L N O T N U L L C H E C K (nom_du_champ_3 > 0),
10
champ4 I N T E G E R D E FA U LT 10);
méthode onUpgrade qui est déclenchée à chaque fois que l'utilisateur met à jour son
application.
13
En fait, Android rajoute automatiquement dans la base une table qui contient la dernière
valeur connue de la base.
EXEMPLE
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String strSql ="drop table T_scores";
db.execSQL(strSql);
this.onCreate(db);
Log.i("DATABASE", "onUpgrade invoked");
} 14
INSERTION
Pour ajouter une entrée dans la table, on utilise la syntaxe suivante :
In s ert i n to nom_de_la_table
(colonne1, colonne2, …) VA LU E S (valeur1, valeur2, …)
L a partie (colonne1, colonne2, … ) permet d'associer une valeur à une colonne précise à l'aide
de la partie (valeur1, valeur2, … ) .
Exemple
public void insertScore(String name, int score){
name=name.replace("'", "''");
String strSql = "insert into T_Scores (name, score,when_) values ('"
+ name + "', "+ score+"," + new Date().getTime() + ")";
this.getWritableDatabase().execSQL(strSql);} 17
S U P P R ES S I O N
La méthode utilisée pour supprimer est:
int delete(String table, String whereClause, String[] whereArgs)
L'entier renvoyé est le nombre de lignes supprimées. Avec:
SELECTION
Cursor query (boolean distinct, String table, String[] columns, String selection,
String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
⚫ distinct, si vous ne voulez pas de résultats en double.
⚫ table est l'identifiant de la table.
⚫ columns est utilisé pour préciser les colonnes à afficher.
⚫ selection est l'équivalent du whereClause précédent.
⚫ selectionArgs est l’équivalent du whereArgs précédent.
⚫ group by permet de grouper les résultats.
⚫ having est utile pour filtrer parmi les groupes.
⚫ order by permet de trier les résultats A S C (croissant) et D E S C ( décroissant).
20
⚫ limit pour fixer un nombre maximal de résultats voulus.
FST/ FES SICOM/S3 18
Développement Android/SQlite
LES CURSEURS
Les curseurs permettent de parcourir le résultat d’une requête :
⚫ int getCount();
⚫ boolean moveToFirst();
⚫ boolean moveToNext();
⚫ boolean moveToLast() pour aller à la dernière.
⚫ boolean moveToPosition(int position);
⚫ int getColumnIndex(String columnName);
⚫ String getString(int columnIndex)
⚫ double getDouble(int columnIndex)
⚫ ...
⚫ void close(); 21
⚫ ...
FST/ FES SICOM/S3 19
Développement Android/SQlite
L E S C U RS E U RS
Un Cursor est capable de retenir la position du dernier élément que l'utilisateur a consulté, il est donc
possible de naviguer d'avant en arrière parmi les lignes grâce aux méthodes suivantes :
⚫ 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.
Pour récupérer la position actuelle, on utilise int getPosition(). Vous pouvez aussi savoir si vous êtes après la
dernière ligne avec boolean isAfterLast().
Par exemple, pour naviguer entre toutes les lignes d'un curseur, on fait :
while (cursor.moveToNext()) {
//Faire quelque chose} 22
cursor.close();
FST/ FES SICOM/S3 20
Développement Android/SQlite
RÉFÉRENCES
https://openclassrooms.com/courses/creez-des- applications-pour-android
https://koor.fr/Java/SupportAndroid
25