SlideShare a Scribd company logo
1 of 36
Download to read offline
•
•
•
•
•
android.content.SharedPreferences
getPreferences (int mode)
getSharedPreferences (String name, int mode)
= () ;
putInt(String key, int value)
putBoolean (String key, boolean value)
putFloat ( String key, float value)
int getInt(String key, int defValue)
boolean getBoolean (String key, boolean defValue)
float getFloat ( String key, float defValue)
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();}
}
•
•
•
•
•
openFileOutput(String nom, int mode)
openFileInput(String nom)
openFileOutput(String nom, int mode) openFileInput(String nom)
Context.MODE_PRIVATE :
Context.MODE_APPEND
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();
}
}
Lire/Ecrire
<manifest ...>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
<manifest ...>
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE" />
...
</manifest>
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 ;
}
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);
}
// 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); }
}
//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);
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
}
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 );"
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, ...};
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";
}
}
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";
}
}
Chapitre 4  persistance des donnees

More Related Content

What's hot

Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
Khalil Lechheb
 

What's hot (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
 

Similar to Chapitre 4 persistance des donnees

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
Eric Toguem
 

Similar to 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
 

More from Amir Souissi

introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
Amir Souissi
 

More from 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
 

Recently uploaded

Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
Faga1939
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
ssuserc72852
 

Recently uploaded (18)

Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Chapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon CoursChapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon Cours
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 

Chapitre 4 persistance des donnees

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 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();} }
  • 13.
  • 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(); } }
  • 19.
  • 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); }
  • 23.
  • 24.
  • 25.
  • 26.
  • 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);
  • 29.
  • 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 }
  • 31.
  • 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"; } }