On va voir maintenant la mise en place de la base de donnée interne de l'application de la class java, à la datasource en passant par le SQLiteOpenHelper.
La classe contact contiendra tout les champs de notre base de donnée SQLite. Elle se crée comme une classe Java classique :
com.androiddev.listviewjson/Contact.java
Rien de bien compliqué : on crée nos attributs avec leurs getter/setter ainsi que la fonction toString().
On doit ensuite crée notre classe qui étend SQLiteOpenHelper. Son objectif est de gérer la création et la mise à jour de la structure de la base de donnée mais aussi la liaison avec la classe contact et le datasource que l'on créera ensuite.
com.androiddev.listviewjson/MySQLiteHelper.java
Implémenter la classe SQLiteOpenHelper impose d'utiliser le constructeur, et les fonctions onCreate et onUpgrade. On déclare aussi tout nos champs de base de donnée, on donne un nom de fichier, un numéro de version mais aussi la requête de création de la base de donnée.
Le constructeur, à travers de la méthode super, appelle soit la faction onCreate ou onUpgrade au cas où la BDD n'existe pas ou n'est pas à jour.
La classe ContactsDataSource est une classe Java qui va s'occuper de toute les opérations CRUD (lecture, écriture, mise à jour et suppression) sur notre BDD.
On créer tout d'abord notre classe ContactsDataSource.java dans le package com.androiddev.listviewjson :
On place tout les imports qui nous seront nécessaire, ainsi que des attributs. Trois attributs dont le premier qui est une instance de SQLiteDatabase, utiliser pour réaliser des requête. Le deuxième est simplement une instance de notre classe créée précédement, MySQLiteHelper et le troisième est un tableau de chaîne de caractère qui contient tout les champs qui nous seront utile.
Ensuite dans le constructeur on créer notre dbHelper qui est un objet MySQLiteHelper en lui passant le context en paramètre.
Puis on créer deux fonctions open et close qui auront pour objectif d'ouvrir en écriture et de fermer la connexion à la base de donnée.
On place maintenant notre fonction de création de Contact (qui correspond à l'insertion de celui-ci dans la base de donnée).
ContactsDataSource.java
Cette fonction createContact appel dés le départ une autre fonction (existContactWithId) dont le but est de vérifier si le contact existe déjà. Si c'est le cas on appel la fonction de mise à jour (updateContact). Sinon on réalise l'insertion.
La fonction de mise à jour sera plus simple.
ContactsDataSource.java
updateContact prend en paramètre l'ID de l'enregistrement a modifié de la BDD et le Contact à mettre à jour.
On passe maintenant à la fonction de récupération d'un Contact avec un id.
ContactsDataSource.java
Une fonction simple qui vérifie l'existence ou non d'un contact.
ContactsDataSource.java
Cette fonction est à peu près la même que la précedente, la différence est que l'on compte le nombre de résultat et qu'on retourne false si aucune ligne ou true pour l'inverse.
Encore une fonction simple mais qui supprimer un contact.
ContactsDataSource.java
Pour la suppression on utilise database.delete qui prend en paramètre le nom de la table, la clause Where et les valeurs pour les paramètres de la clause Where si nécessaire.
Une fonction qui nous servira à lister tout les contacts enregistrés dans la BDD.
ContactsDataSource.java
La fonction cursorToContact convertira le Cursor en Contact.
ContactsDataSource.java