SlideShare une entreprise Scribd logo

Chapitre 4 persistance des donnees

Notion de Persistance, Les SharedPreferences, Manipulation des Fichiers, Stockage Interne et Externe, Base de Données SQLite

1  sur  36
Télécharger pour lire hors ligne
Chapitre 4  persistance des donnees
Chapitre 4  persistance des donnees
Chapitre 4  persistance des donnees
Chapitre 4  persistance des donnees
Chapitre 4  persistance des donnees
Chapitre 4  persistance des donnees

Recommandé

Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de javaAmir Souissi
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeAmir Souissi
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfacesAmir Souissi
 
Chapitre 1 introduction generale
Chapitre 1   introduction generaleChapitre 1   introduction generale
Chapitre 1 introduction generaleAmir Souissi
 
Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objetsAbdoulaye Dieng
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objetsAbdoulaye Dieng
 

Contenu connexe

Tendances

Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2Yassine Badri
 
Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]Yassine Badri
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1Yassine Badri
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreECAM Brussels Engineering School
 
Csharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interfaceCsharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interfaceAbdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationECAM Brussels Engineering School
 

Tendances (20)

Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Cpp3 : heritage
Cpp3 : heritageCpp3 : heritage
Cpp3 : heritage
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
 
Les listes en Python
Les listes en PythonLes listes en Python
Les listes en Python
 
Python avancé : Tuple et objet
Python avancé : Tuple et objetPython avancé : Tuple et objet
Python avancé : Tuple et objet
 
Csharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interfaceCsharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interface
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Part1
Part1Part1
Part1
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 
Cours c++
Cours c++Cours c++
Cours c++
 
POO
POOPOO
POO
 
TD Java POO
TD Java POO TD Java POO
TD Java POO
 
Cours de JAVA de base
Cours de JAVA  de baseCours de JAVA  de base
Cours de JAVA de base
 
Type abstrait de données
Type abstrait de donnéesType abstrait de données
Type abstrait de données
 

Similaire à Chapitre 4 persistance des donnees

Similaire à Chapitre 4 persistance des donnees (20)

Javascript : fondamentaux et OOP
Javascript : fondamentaux et OOPJavascript : fondamentaux et OOP
Javascript : fondamentaux et OOP
 
Présentation nouveauté java7
Présentation nouveauté java7Présentation nouveauté java7
Présentation nouveauté java7
 
jpa.pdf
jpa.pdfjpa.pdf
jpa.pdf
 
Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdf
 
Android ORMLite
Android   ORMLiteAndroid   ORMLite
Android ORMLite
 
Hibernate
HibernateHibernate
Hibernate
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
 
Java 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambdaJava 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambda
 
TP7_Master.pdf
TP7_Master.pdfTP7_Master.pdf
TP7_Master.pdf
 
TP7_Master.pdf
TP7_Master.pdfTP7_Master.pdf
TP7_Master.pdf
 
SdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireSdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoire
 
Les nouveautés de java 7 et les promesses
Les nouveautés de java 7  et les promessesLes nouveautés de java 7  et les promesses
Les nouveautés de java 7 et les promesses
 
Spark dataframe
Spark dataframeSpark dataframe
Spark dataframe
 
Change mind about JS
Change mind about JSChange mind about JS
Change mind about JS
 
Php1
Php1Php1
Php1
 
Présentation de DBAL en PHP
Présentation de DBAL en PHPPrésentation de DBAL en PHP
Présentation de DBAL en PHP
 
Fondamentaux portée - contexte - function ms tech days
Fondamentaux   portée - contexte - function ms tech daysFondamentaux   portée - contexte - function ms tech days
Fondamentaux portée - contexte - function ms tech days
 
Présentation de DBAL en PHP (Nantes)
Présentation de DBAL en PHP (Nantes)Présentation de DBAL en PHP (Nantes)
Présentation de DBAL en PHP (Nantes)
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Living Documentation (TDD, BDD).pptx
Living Documentation (TDD, BDD).pptxLiving Documentation (TDD, BDD).pptx
Living Documentation (TDD, BDD).pptx
 

Plus de Amir Souissi

Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsAmir Souissi
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptionsAmir Souissi
 
Chapitre 3 activites et intents
Chapitre 3   activites et  intentsChapitre 3   activites et  intents
Chapitre 3 activites et intentsAmir Souissi
 
Chapitre 2 elements graphiques android
Chapitre 2   elements graphiques androidChapitre 2   elements graphiques android
Chapitre 2 elements graphiques androidAmir Souissi
 
Chapitre 1 decouverte du developpement android
Chapitre 1  decouverte du developpement androidChapitre 1  decouverte du developpement android
Chapitre 1 decouverte du developpement androidAmir Souissi
 
Atelier symfony n 3
Atelier symfony n 3Atelier symfony n 3
Atelier symfony n 3Amir Souissi
 
Atelier symfony n 2
Atelier symfony n 2Atelier symfony n 2
Atelier symfony n 2Amir Souissi
 
Atelier symfony n 1
Atelier symfony n 1Atelier symfony n 1
Atelier symfony n 1Amir Souissi
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classeAmir Souissi
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objetAmir Souissi
 

Plus de Amir Souissi (17)

Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitions
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptions
 
Chapitre 3 activites et intents
Chapitre 3   activites et  intentsChapitre 3   activites et  intents
Chapitre 3 activites et intents
 
Chapitre 2 elements graphiques android
Chapitre 2   elements graphiques androidChapitre 2   elements graphiques android
Chapitre 2 elements graphiques android
 
Chapitre 1 decouverte du developpement android
Chapitre 1  decouverte du developpement androidChapitre 1  decouverte du developpement android
Chapitre 1 decouverte du developpement android
 
Atelier symfony n 3
Atelier symfony n 3Atelier symfony n 3
Atelier symfony n 3
 
Atelier symfony n 2
Atelier symfony n 2Atelier symfony n 2
Atelier symfony n 2
 
Atelier symfony n 1
Atelier symfony n 1Atelier symfony n 1
Atelier symfony n 1
 
Tp n 6 linux
Tp n 6 linuxTp n 6 linux
Tp n 6 linux
 
Tp n 5 linux
Tp n 5 linuxTp n 5 linux
Tp n 5 linux
 
Tp n 4 linux
Tp n 4 linuxTp n 4 linux
Tp n 4 linux
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
 
Tp n 1 linux
Tp n 1 linuxTp n 1 linux
Tp n 1 linux
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classe
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
 

Dernier

DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...
DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...
DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...Michael Barbour
 
Fabriquer une femme.Livre écrit par Marie Darrieussecq
Fabriquer une femme.Livre écrit par Marie DarrieussecqFabriquer une femme.Livre écrit par Marie Darrieussecq
Fabriquer une femme.Livre écrit par Marie DarrieussecqTxaruka
 
Le langage n'est-il qu'un instrument de communication ? (V2)
Le langage n'est-il qu'un instrument de communication ? (V2)Le langage n'est-il qu'un instrument de communication ? (V2)
Le langage n'est-il qu'un instrument de communication ? (V2)Gabriel Gay-Para
 
Evaluation universitaire AI TELUQ 2024.pdf
Evaluation universitaire AI TELUQ 2024.pdfEvaluation universitaire AI TELUQ 2024.pdf
Evaluation universitaire AI TELUQ 2024.pdfMathieu Plourde
 
Images-Collapso-V3.pptx Images sur les limites planétaires
Images-Collapso-V3.pptx Images sur les limites planétairesImages-Collapso-V3.pptx Images sur les limites planétaires
Images-Collapso-V3.pptx Images sur les limites planétairesProvisoire Karendeux
 

Dernier (6)

DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...
DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...
DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...
 
Cours prothèse dentaire bac professionnel
Cours prothèse dentaire bac professionnelCours prothèse dentaire bac professionnel
Cours prothèse dentaire bac professionnel
 
Fabriquer une femme.Livre écrit par Marie Darrieussecq
Fabriquer une femme.Livre écrit par Marie DarrieussecqFabriquer une femme.Livre écrit par Marie Darrieussecq
Fabriquer une femme.Livre écrit par Marie Darrieussecq
 
Le langage n'est-il qu'un instrument de communication ? (V2)
Le langage n'est-il qu'un instrument de communication ? (V2)Le langage n'est-il qu'un instrument de communication ? (V2)
Le langage n'est-il qu'un instrument de communication ? (V2)
 
Evaluation universitaire AI TELUQ 2024.pdf
Evaluation universitaire AI TELUQ 2024.pdfEvaluation universitaire AI TELUQ 2024.pdf
Evaluation universitaire AI TELUQ 2024.pdf
 
Images-Collapso-V3.pptx Images sur les limites planétaires
Images-Collapso-V3.pptx Images sur les limites planétairesImages-Collapso-V3.pptx Images sur les limites planétaires
Images-Collapso-V3.pptx Images sur les limites planétaires
 

Chapitre 4 persistance des donnees

  • 10. = () ; putInt(String key, int value) putBoolean (String key, boolean value) putFloat ( String key, float value)
  • 11. int getInt(String key, int defValue) boolean getBoolean (String key, boolean defValue) float getFloat ( String key, float defValue)
  • 12. public void save (){ 1 SharedPreferences SP = getSharedPreferences 2 SharedPreferences.Editor editor = SP.edit(); 3 editor.putString("nom",Name.getText().toString()); 4 editor.commit(); //valider la modification de SP } public void load (){ 1 SharedPreferences SP = getSharedPreferences 2 String Nom = SP.getString ("nom", "N/A"); // "N/A" est la valeur par défaut retournée si non trouvé 3 if ( Nom.equals("N/A")) { 4 Toast.makeText(this, "Données non trouvées",1).show();} }
  • 15. openFileOutput(String nom, int mode) openFileInput(String nom)
  • 16. openFileOutput(String nom, int mode) openFileInput(String nom) Context.MODE_PRIVATE : Context.MODE_APPEND
  • 17. public void load (){ String FILENAME = "file1.txt"; FileInputStream fis = null ; byte [] buffer = new byte [1024]; StringBuilder content = new StringBuilder(); // objet content de type StringBuilder try { fis = openFileInput(FILENAME); while ((fis.read(buffer) != -1)) { // ajouter à content le caractère pour construire le String content.append(new String(buffer));} fis.close(); }catch (FileNotFoundException e){ e.printStackTrace(); } catch (IOException e){ e.printStackTrace(); } } public void save (){ String FILENAME = "file1.txt"; String str = "Ceci est mon premier exemple"; //texte à ajouter au fichier FileOutputStream fos; try{ fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(str.getBytes()); fos.close(); }catch (FileNotFoundException e){ e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); } }
  • 20. <manifest ...> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ... </manifest> <manifest ...> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ... </manifest>
  • 21. boolean disponible = false ; boolean dispo_ecriture = false ; String etat = Environment.getExternalStorageState(); //vérifier l’état de la carte SD est monté ou démontée if (Environment.MEDIA_MOUNTED.equals(etat)) { //on peut lire et écrire la crate disponible = dispo_ecriture = true ; } else if (Environment. MEDIA_MOUNTED_READ_ONLY.equals(etat){ //on peut seulement lire la carte disponible = true ; dispo_ecriture = false ; } else { //Autre chose va mal. Ca peut être un état parmi plusieurs états possibles, ce que nous voulons c’est est ce qu’on peut lire et écrire disponible = dispo_ecriture = false ; }
  • 22. public void savePrivateExternalFile (){ String data = editText.getText().toString(); File folder = getExternalFilesDir("nameDir"); File myfile = new File (folder, "ma donnée"); writeData (myfile, data); } public void savePublicExternalFile (){ String data = editText.getText().toString(); File folder = Environment.getExternalStoragePublicDirectory(Environment.Directory_DOWNLOADS); File myfile = new File (folder, "ma donnée"); writeData (myfile, data); }
  • 27. // Méthode de callback // onCreate(db); } } public class ContactBase extends SQLiteOpenHelper { // nom de la table private static final String TABLE_NAME = "contacts"; // nom des colonnes private static final String COL_ID = "id"; private static final String COL_NAME = "nom"; private static final String COL_DESC = "description"; // requête de création de la table private static final String CREATE_TABLE = "CREATE TABLE" + TABLE_NAME + "(" + COL_ID + "INTEGER PRIMARY KEY AUTOINCREMENT," + COL_NAME + "TEXT NOT NULL," + COL_DESC + "TEXT NOT NULL );" ; // Constructeur public ContactBase (Context context, String name, CursorFactory factory, int version) { super (context, name, factory, version); } // Méthode de callback onCreate permet de créer la base à l’aide de la requête stockée précédente public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE); } // Méthode de callback onUpgrade permet de gérer la montée en version de la base public void onUpgrade(SQLiteDataBase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } }
  • 28. //helper est une instance de la classe héritant de SQLiteOpenHelper SQLiteDatabase bd = helper.getReadableDatabase(); //requête SQL de selection de type String String requeteSelect = "select * from Contacts where _id = 1" ; //passer la requête SQL en argument à rawQuery car on s’attend à un retour d’un set de tuples Cursor curseur = bd.rawQuery(requeteSelect, null); // helper est une instance de la classe héritant de SQLiteOpenHelper SQLiteDataBase bd = helper.getWritableDatabase(); // Requête SQL de suppression d’un enregistrement String requeteDelete = "delete from Produit where _id = " + id.getText(); // passer la requête SQL en argument à execSQL et retourne le nombre d’enregistrements affectés long nb = bd.execSQL(requeteDelete);
  • 30. Cursor curseur = bd.rawQuery("select * from Contacts" , null); if(curseur.moveToFirst()){ curseur.moveToFirst(); String elem1 = curseur.getString(0); //extraire le champ 1 : l’id String elem2 = curseur.getString(1); //extraire le champ 2 : le nom String elem3 = curseur.getString(2); //extraire le champ 3 : la description curseur.close(); //fermer ce curseur }
  • 32. String tableStatement = "CREATE TABLE entry ( _id INTEGER PRIMARY KEY, entryid TEXT, title TEXT, subtitle TEXT );" String SQL_CREATE = "CREATE TABLE" + entry.TABLE_NAME + "(" + entry._ID + "INTEGER PRIMARY KEY," + entry.COLUMN_NAME_ENTRY_ID + "TEXT ," + entry.COLUMN_NAME_TITLE + "TEXT );"
  • 33. String SQL_CREATE = "CREATE TABLE" + entry.TABLE_NAME + "(" + entry._ID + "INTEGER PRIMARY KEY," + entry.COLUMN_NAME_ENTRY_ID + "TEXT ," + entry.COLUMN_NAME_TITLE + "TEXT );" values.put(entry.COLUMN_NAME_TITLE, nom.getText().toString()); String [] columns = new String [] {entry.COLUMN_NAME_TITLE, ...};
  • 34. public final class FeedContract { // Pour éviter d’instancier accidentellement la classe Contract, on déclare le constructeur privé private FeedContract() {} /* Classe interne qui définie le contenu de la table */ public static class FeedEntry implements BaseColumns { public static final String TABLE_NAME = "entry"; public static final String COLUMN_NAME_TITLE = "title"; public static final String COLUMN_NAME_SUBTITLE = "subtitle"; } }
  • 35. public final class FeedContract { /* Pour éviter d’instancier accidentellement la classe Contract, on déclare le constructeur privé */ private FeedContract() {} /* Classe interne qui définie le contenu de la table */ public static class FeedEntry implements BaseColumns { public static final String TABLE_NAME = "entry"; public static final String COLUMN_NAME_TITLE = "title"; public static final String COLUMN_NAME_SUBTITLE = "subtitle"; } }