sio2:gestion_des_donnees_avec_sqlite

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sio2:gestion_des_donnees_avec_sqlite [2024/12/02 08:55] – [2. La base de données SQLite] dthevenotsio2:gestion_des_donnees_avec_sqlite [2024/12/02 09:47] (Version actuelle) – [5. Questions] dthevenot
Ligne 1: Ligne 1:
 ===== Android(4) : Gestion des données avec SQLite ===== ===== Android(4) : Gestion des données avec SQLite =====
 +<alert type="info">Réaliser les manipulations avec méthode et application pour comprendre le processus de création et manipulation de données avec SQLite</alert>
 ==== 1. Contexte : suite du projet Inventaire.  ==== ==== 1. Contexte : suite du projet Inventaire.  ====
 Les articles saisis devront être mémorisés dans une base de données SQLite sous Android. Les articles saisis devront être mémorisés dans une base de données SQLite sous Android.
Ligne 7: Ligne 8:
 === a. Généralités === === a. Généralités ===
    
-SQLite est un système de gestion de base de données compatible SQL **léger et embarqué**, qui ne requiert pas de serveur externe. Tout est inclus dans une seule bibliothèque, ce qui facilite son intégration dans une large variété d’applications. Son architecture légère la rend adaptée aux environnements avec des ressources limitées, comme les appareils mobiles et les systèmes embarqués.+SQLite est un système de gestion de base de données compatible SQL **léger et embarqué**, qui ne requiert pas de serveur externe. Tout est inclus dans une seule bibliothèque (d'où la caractéristique //"embarqué"// avec l'application), ce qui facilite son intégration dans une large variété d’applications. Son architecture légère la rend adaptée aux environnements avec des ressources limitées, comme les appareils mobiles et les systèmes embarqués.
  
 Par ailleurs, SQLite garantit la conformité aux **propriétés ACID** : Atomicité, Cohérence, Isolation, Durabilité. Ceci assure la fiabilité des opérations de base de données, même en cas d’interruption soudaine du système.  Par ailleurs, SQLite garantit la conformité aux **propriétés ACID** : Atomicité, Cohérence, Isolation, Durabilité. Ceci assure la fiabilité des opérations de base de données, même en cas d’interruption soudaine du système. 
Ligne 56: Ligne 57:
 === a. Création de la couche métier === === a. Création de la couche métier ===
    
-  * Dans app/src/main/java, créer un nouveau package nommé metier (Clic droit sur  app/java)  +  * Dans //app/src/main/java//, créer un nouveau package nommé **metier** (Clic droit sur  app/java)  
-  * Dans ce package, créer la classe Java nommée Article. Cette classe nous servira de  passerelle vers la base de données.  +  * Dans ce package, créer la classe Java nommée **Article**. Cette classe nous servira de passerelle vers la base de données.  
-    * La classe Article comprendra les attributs id (int initialisé à 0), reference(String),  designation(String), prix(float) et qte(int).  +    * La classe Article comprendra les attributs //id//(int initialisé à 0), //reference//(String),  //designation//(String), //prix//(float) et **qte**(int).  
-    * Elle devra disposer des accesseurs (getters), de la méthode toString() et de 2  constructeurs (clic droit puis Generate) : +    * Elle devra disposer des accesseurs (//getters//), de la méthode //toString()// et de 2 constructeurs (clic droit puis **Generate**) : 
       * l'un avec tous les attributs        * l'un avec tous les attributs 
       * l'autre sans l'attribut id.        * l'autre sans l'attribut id. 
Ligne 65: Ligne 66:
 === b. Création de la base de données, classe CreateBdInventaire === === b. Création de la base de données, classe CreateBdInventaire ===
    
-  * Toujours dans **app/src/main/java** créer un **nouveau package nommé bdd**+  * Toujours dans //app/src/main/java// créer un nouveau package nommé **bdd**
   * Dans ce package, créer la classe Java **CreateBdInventaire**. Cette classe hérite de la  classe **SQLiteOpenHelper**. Elle permet de définir la structure de la base de données.     * Dans ce package, créer la classe Java **CreateBdInventaire**. Cette classe hérite de la  classe **SQLiteOpenHelper**. Elle permet de définir la structure de la base de données.  
     * Renseigner la superclass      * Renseigner la superclass 
     * Redéfinir les méthodes onCreate et onUpdate      * Redéfinir les méthodes onCreate et onUpdate 
     * Générer automatiquement le constructeur,  faites-le en utilisant la première proposition :     * Générer automatiquement le constructeur,  faites-le en utilisant la première proposition :
 +{{ :promo_2025:slam:3sqllite1.png?600 |}}
     * Lors de l'instanciation de cette classe, le système vérifiera si la base existe :      * Lors de l'instanciation de cette classe, le système vérifiera si la base existe : 
-      * si elle n'existe pas, il la créera en faisant appel à la méthode onCreate  +      * si elle n'existe pas, il la créera en faisant appel à la méthode //onCreate//  
-      * si elle existe, il vérifie la version, si la version de la base a changé, la base  sera regénérée, (méthode onUpgrade).  +      * si elle existe, il vérifie la version, si la version de la base a changé, la base  sera regénérée, (méthode //onUpgrade//).  
-    * Code de la classe CreateBdInventaire :+    * Code de la classe **CreateBdInventaire** :
 <code> <code>
 public class CreateBdInventaire extends SQLiteOpenHelper {  public class CreateBdInventaire extends SQLiteOpenHelper { 
Ligne 115: Ligne 116:
  
 </code> </code>
-**NB** Les instructions Log.d permettent de pister le déroulement du programme. d debug +**NB** Les instructions Log.d permettent de pister le déroulement du programme. (debug
  
 === c. Création de la classe gérant les accès à la base de données : DAO === === c. Création de la classe gérant les accès à la base de données : DAO ===
Ligne 128: Ligne 129:
 </code> </code>
  
-  * d'un constructeur : //imgConstructeur//+  * d'un constructeur : {{ :promo_2025:slam:3sqlliteconstructeur.png?600 |}}
  
-  * d'une méthode open pour ouvrir la base de données //imgopen//+  * d'une méthode open pour ouvrir la base de données :{{ :promo_2025:slam:3sqlliteopen.png?400 |}}
  
-  * et d'une méthode close pour la fermer//imgclose//+  * et d'une méthode close pour la fermer : {{ :promo_2025:slam:3sqlliteclose.png?400 |}}
  
 === d. Création de la classe gérant les accès à la table article : Article DAO === === d. Création de la classe gérant les accès à la table article : Article DAO ===
    
-Enfin, dans le package bdd, nous allons ajouter la classe ArticleDAO chargée de gérer les accès à la table article (méthodes CRUD).+Enfin, dans le package bdd, nous allons ajouter la classe **ArticleDAO** chargée de gérer les accès à la table article (méthodes CRUD).
    
-Cette classe disposera d'abord d'un constructeur et d'une méthode permettant de fermer la  base de données : +Cette classe disposera d'abord d'un constructeur et d'une méthode permettant de fermer la  base de données : {{ :promo_2025:slam:3sqllitearticledao.png?400 |}}
  
 Puis des méthodes CRUD, notamment la méthode create(Article unArticle), chargée de  créer l'article passé en paramètre dans la base de données. Puis des méthodes CRUD, notamment la méthode create(Article unArticle), chargée de  créer l'article passé en paramètre dans la base de données.
-//imgcreate// Les autres méthodes d'accès à  la base seront insérées par la suite.+Les autres méthodes d'accès à  la base seront insérées par la suite. {{ :promo_2025:slam:3sqllitecreate.png?600 |}}
  
 === e. Insertion des données saisies === === e. Insertion des données saisies ===
Ligne 147: Ligne 148:
 Modification de la classe **AjoutArticleActivity** : jusqu'à présent seul le bouton Quitter était géré, il faut désormais gérer le bouton Ajout.  Modification de la classe **AjoutArticleActivity** : jusqu'à présent seul le bouton Quitter était géré, il faut désormais gérer le bouton Ajout. 
   * 1) Ajouter des propriétés à cette classe :    * 1) Ajouter des propriétés à cette classe : 
-    * a. Déclarer la variable d'accès à la table article : private ArticleDAO articleDAO = null;  +    * a. Déclarer la variable d'accès à la table article : //private ArticleDAO articleDAO = null;//  
-    * b. Déclarer un objet de type Article : Article art = null; +    * b. Déclarer un objet de type Article : //Article art = null;// 
     * c. Déclarer les différents contrôles graphiques :      * c. Déclarer les différents contrôles graphiques : 
 <code> <code>
Ligne 172: Ligne 173:
 </code> </code>
  
-  * 2) À la fin de la méthode onCreate, appeler la méthode creationArticle que l'on  va écrire. +  * 2) À la fin de la méthode **onCreate**, appeler la méthode **creationArticle** que l'on  va écrire. 
   * 3) Ajouter la méthode creationArticle()    * 3) Ajouter la méthode creationArticle() 
 <code> <code>
Ligne 216: Ligne 217:
   * 4) Fermer la base de données quand l'utilisateur quitte la fonctionnalité, ajouter : //artDAO.close();// avant //finish();//    * 4) Fermer la base de données quand l'utilisateur quitte la fonctionnalité, ajouter : //artDAO.close();// avant //finish();// 
   * 5) Tester : Ajouter des articles. Le message indiquant le numéro de l'article ajouté doit s'afficher.    * 5) Tester : Ajouter des articles. Le message indiquant le numéro de l'article ajouté doit s'afficher. 
 +
 +<badge>Montrer l'application à Mme Thevenot</badge>
  
 ==== 4. Vérifications ==== ==== 4. Vérifications ====
Ligne 233: Ligne 236:
 ==== 5. Questions ==== ==== 5. Questions ====
    
-Répondre aux questions suivantes à la suite du document déposé sur le Drive. +Répondre aux questions suivantes **à la suite du document déposé sur le Drive**
   - Présenter brièvement le travail à effectuer    - Présenter brièvement le travail à effectuer 
   - Citer les 3 classes permettant la gestion de la base de données, et préciser le rôle de  chacune    - Citer les 3 classes permettant la gestion de la base de données, et préciser le rôle de  chacune 
Ligne 241: Ligne 244:
   - Expliquer comment procéder pour ajouter la table categorie(id, libelle) à la base de  données et la relier à la table article (clé étrangère idCategorie).   - Expliquer comment procéder pour ajouter la table categorie(id, libelle) à la base de  données et la relier à la table article (clé étrangère idCategorie).
  
 +<badge>Montrer le document à Mme Thevenot</badge>
  • sio2/gestion_des_donnees_avec_sqlite.1733126136.txt.gz
  • Dernière modification : 2024/12/02 08:55
  • de dthevenot