Chapitre 5. La persistance des données

Dimension: px
Commencer à balayer dès la page:

Download "Chapitre 5. La persistance des données"

Transcription

1 Chapitre 5 La persistance des données 1

2 Plan du chapitre 5 Comment partager des données entre applications Utilisation des Shared Preferences Utilisation du système de fichiers (dont XML) Utilisation de la base de données (SQLite) 2

3 Introduction On peut sauvegarder des données sur un smartphone (si, si) Plusieurs techniques et API sont proposées : le système de fichiers du smartphone (= un ordinateur sous Linux) les SharedPreferences: les préférences partagées les BDs relationnelles (et les traiter par SQL) : c'est la technologie SQLite Ce sont les "zones internes" On peut sauvegarder sur des "zones externes" qui sont la carte SD ou des zones accessibles par le réseau (serveur distant,...) source : 3

4 Les SharedPreferences = Les préférences partagées Permet d'enregistrer des données qui seront récupérées par les prochaines sessions : elles sont "partagées" entre sessions Elles sont accessibles par l'ensemble des composants de l'application Utilité : donner des exemples "Preferences are available at the Activity level or shared across all of Activity classes for a given application (but not outside of the application package)." (=> si on est dans l'application package, on peut les utiliser, cf. suite de l'exposé) source : id-application-preferences/ 4

5 Types de données dans une SharedPreferences On enregistre sous la forme clé (= nom de la donnée, toujours de classe String) / valeur de cette donnée Les valeurs ne peuvent être que "simples" : de type boolean, int, long, float(et pas double!) ou de classe Stringou Set<String> "You can use SharedPreferences to save any primitive data: booleans, floats, ints, longs, and strings. This data will persist across user sessions (even if your application is killed)." source : a-storage.html#pref 5

6 Récupérer les SharedPreferences Avec une constante comme : private static final String NOM_PREFS = "JMFPrefs"; on récupère les SharedPreferencesde l'application associées à cette constante par : SharedPreferences mesprefs = getsharedpreferences(nom_prefs, Context.MODE_PRIVATE); int lecompteur = mesprefs.getint("compteur", 0); public abstract SharedPreferences getsharedpreferences (String name, int mode)est une méthode de la classe abstraite Context donc implémentée dans les Activity Cette méthode est un singleton : elle retourne toujours le même objet qui modélise le conteneur de préférences partagées name est le nom du fichier de SharedPreferences modeindique la portée de ses préférences. Ici l'application (Context.MODE_PRIVATEvaleur par défaut) Le fichier de préférences (repéré par NOM_PREFS) est un fichier XML rangé dans /data/data/nom_package_appli/shared_prefs/nom_prefs.xml 6

7 Lire dans les SharedPreferences Il suffit alors de lancer sur le SharedPreferencesrécupéré précédemment une des méthodes public abstract XXX getxxx (String key, XXX defvalue) où XXXpeut valoir boolean, int, long, float, Stringou Set<String> defvalue est la valeur par défaut retournée Par exemple : SharedPreferences mesprefs = getsharedpreferences(nom_prefs, Context.MODE_PRIVATE); int lecompteur = mesprefs.getint("compteur", 0); On peut récupérer toutes les valeurs du SharedPreferencesà l'aide de public abstract Map<String,?> getall () 7

8 Ecrire dans les SharedPreferences Il faut passer par un éditeur associé à la SharedPreferences Editor unediteurdessharedprefs = mesprefs.edit(); int lecompteur =...; unediteurdessharedprefs.putint("compteur", lecompteur); unediteurdessharedprefs.commit(); Ne pas oublier de faire commit()(qui est synchrone) ou apply()qui est asynchrone (i.e. est lancé dans une autre thread) pour réellement enregistrer les changements (n'est ce pas jean-marc!) Une démo? : OK projet Ch5SharedPreferencesJMFProjet : lancer l'appli, la personnaliser, lancer une autre appli (ou l'arrêter), la relancer. Ne pas arrêter "brutalement" l'avd! (= on casse le smartphone!) Par contre on peut éteindre un smartphone et le rallumer, le smartphone a gardé les valeurs (normal il les a écrit dans son système de fichiers) 8

9 Manipuler des SharedPreferences entre applications (1/5) C'est possible. Il suffit de récupérer le Contextde l'application dont on veut avoir les SharedPreferences On utilise les types de dépôt de données : Context.MODE_PRIVATE: les données seront privées à l'application Context.MODE_WORLD_READABLE: les données pourront être lues par toutes les applications Context.MODE_WORLD_WRITEABLE: les données pourront être modifiées par toutes les applications Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE: les données pourront être lues et modifiées par toutes les applications Ces modes sont utilisés au moment où on demande de récupérer les SharedPreferences 9

10 Manipuler des SharedPreferences entre applications (2/5) On utilise les constantes : public static final String PREFS_PRIVATE = "PREFS_PRIVATE"; public static final String KEY_PRIVATE = "KEY_PRIVATE"; public static final String PREFS_READ = "PREFS_READ"; public static final String KEY_READ = "KEY_READ"; public static final String PREFS_WRITE = "PREFS_WRITE"; public static final String KEY_WRITE = "KEY_WRITE"; public static final String PREFS_READ_WRITE = "PREFS_READ_WRITE"; public static final String KEY_READ_WRITE = "KEY_READ_WRITE"; 10

11 Manipuler des SharedPreferences entre applications (3/5) Une première appli (Ch5SharedPreferencesJMFDepotProjet) dépose des données suivant différents modes de dépôt : sharedpreferences = getsharedpreferences(prefs_private, Context.MODE_PRIVATE); Editor prefsprivateeditor = sharedpreferences.edit(); prefsprivateeditor.putstring(key_private, "prive"); prefsprivateeditor.commit(); sharedpreferences = getsharedpreferences(prefs_read, Context.MODE_WORLD_READABLE);... prefsreadeditor.putstring(key_read, readfield.gettext().tostring());... sharedpreferences = getsharedpreferences(prefs_write, Context.MODE_WORLD_WRITEABLE);... prefswriteableeditor.putstring(key_write, writefield.gettext().tostring()); sharedpreferences = getsharedpreferences(prefs_read_write, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);... prefsreadwriteableeditor.putstring(key_read_write, read_writefield.gettext().tostring()); 11

12 Manipuler des SharedPreferences entre applications (4/5) Une seconde application (Ch5SharedPreferencesJMFLitProjet) récupère le Contextde la première appli par la méthode public abstract Context createpackagecontext(string packagename, int flags) Le packagenameest le nom du package de la première appli (le voir dans l'androidmanifest.xml de la première appli) Context otherappscontext = null; try { otherappscontext = createpackagecontext("nomdupaquetage1ereappli", Context.CONTEXT_IGNORE_SECURITY); } catch (NameNotFoundException e) { } Il suffit alors de lire à l'aide de ce Contextpar : sharedpreferences = otherappscontext.getsharedpreferences(prefs_private, MODE_PRIVATE);... = sharedpreferences.getstring(key_private, "PRIVATE EMPTY"); sharedpreferences = otherappscontext.getsharedpreferences(prefs_read,mode_world_readable);... = sharedpreferences.getstring(key_read, "WORLD READ EMPTY"); sharedpreferences = otherappscontext.getsharedpreferences(prefs_write, MODE_WORLD_WRITEABLE);... = sharedpreferences.getstring(key_write, "WORLD WRITE EMPTY"); sharedpreferences = otherappscontext.getsharedpreferences(prefs_read_write, MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);... = sharedpreferences.getstring(key_read_write, "WORLD READ WRITE EMPTY"); 12

13 Manipuler des SharedPreferences entre applications (5/5) Une démo? OK! (source : Oleg Mazurashu à La première appli permet de saisir : La seconde appli relit les SharedPreferencesde la première appli : Pourquoi les données Private et Writeable ne sont pas relues? Parce qu'elles ont privées (à la première application) et seulement inscriptible (write) et pas lisibles (read)! D'ailleurs on a : 13

14 Les fichiers sous Android Android étant un système Unix, une API est proposée pour manipuler les fichiers. Elle est similaire à celle proposée par Java SE On utilise public abstract FileOutputStream openfileoutput (String name, int mode)et public abstract FileInputStream openfileinput (String name) de la classe abstraite Contextdonc implémentées par la classe Activity nameest le nom du fichier, modeest le mode d'ouverture. Ce peut être : MODE_PRIVATE(valeur par défaut) : le fichier ne sera accessible que par l'application créatrice, MODE_APPEND: le mode ajout, MODE_WORLD_READABLE: lisible par toutes les applications, MODE_WORLD_WRITEABLE: peut être modifiées par toutes les applications 14

15 Code de manipulations de fichiers try { // Crée un flux de sortie vers un fichier local FileOutputStream ous = openfileoutput(nom_fichier, MODE_PRIVATE); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(ous)); bw.write("chouette titre de JMF"); bw.close(); // Crée un flux d'entrée depuis un fichier local FileInputStream ins = openfileinput(nom_fichier); BufferedReader br = new BufferedReader(new InputStreamReader(ins)); String valeurlue = br.readline(); this.settitle(valeurlue); ins.close(); } catch (Exception e) { // Traitement des exceptions... } On utilise aussi java.io 15

16 Lecture / Ecriture dans un fichier : une démo Une démo? OK! Projet Ch5ProgAndroidFichierJMFProjet : sauvegarde de contenu dans un fichier texte Lorsqu'on lance de nouveau cette application (après l'avoir reconstruite!), le contenu du fichier ainsi que son emplacement est affiché Pour nettoyer (!), tout effacer et cliquer "Et enregistrer le!" 16

17 Un peu plus sur les fichiers Pour connaître où se trouve le fichier, utiliser la méthode public File getfilesdir() public String[] filelist()retourne un tableau des fichiers sauvegardés par l'application Une application peut détruire un de ces fichiers grâce à public boolean deletefile (String nomdufichier) Toutes sont des méthodes de la classe abstraite android.content.context donc implémentée par les Activity 17

18 Une base de données =? Une base de données est un système contenant des données et géré par un logiciel Une base de données (BD) relationnelle présente ces (ses?) informations dans des tables Les tables donnent une vision "ligne colonne" des données Une ligne représente un enregistrement Une colonne est l'ensemble des valeurs d'un champ des enregistrements de la table Les données sont structurées Les colonnes sont typées Le logiciel est le système de gestion de base de données (relationnelles) : SGBD(R) Bref, une BDR est un ensemble de tables, une table est un ensemble d enregistrements (jmf) 18

19 Une table : un exemple Une table de films 19

20 BD : sujet simple ou complexe? Louer un film =? Et si vous êtes plusieurs utilisateurs simultanément? Et si beaucoup (énormément) d'utilisateurs? Lire les données est ce facile? Euh, et si l'administrateur fait des insertions à ce moment là? Bref gestion de concurrence, variation de charge, accès rapide, transaction,... Beaucoup de bases de données relationnelles : DB2, Oracle, Sybase, Microsoft SQL server, MySQL,... 20

21 Remarques sur SQLite La base de données FILENAMEest stockée dans le smartphone sous /data/data/nom_package_appli/databases/filenameoù NOM_PACKAGE_APPLIest le nom du package de l'application Android (celui indiqué au début du fichier AndroidManifest.xml) L'exécution des requêtes est effectuée dans le même processus que l'application Android et une BD est réservée à l'application créatrice : seule cette application créatrice peut y accéder. Si on veut des données partageables entre applications Android, voir les ContentProvider "Any databases you create will be accessible by name to any class in the application, but not outside the application." source : 21

22 Une BD Android = une SQLiteDatabase Dans le code, une base de données est modélisée par un objet de la classe android.database.sqlite.sqlitedatabase Cette classe permet donc d'insérer des données dans des tables (insert()), de les modifier (update()), de les enlever (delete()), de lancer des requêtes SELECT (par query()) ou des requêtes qui ne retournent pas de données par execsql() Les requêtes Create, Read, Update, Delete (~ INSERT, SELECT, UPDATE, DELETE de SQL) sont dites des requêtes CRUD 22

23 Une classe d'aide à l'ouverture (OpenHelper) Pour créer et/ou mettre à jour une BD, on écrit une classe qui hérite de la classe abstraite android.database.sqlite.sqliteopenhelper Cela nécessite de créer un contructeur qui appelera un des constructeurs avec argument de SQLiteOpenHelper: il n'y a pas de constructeur sans argument dans SQLiteOpenHelper Le constructeur de SQLiteOpenHelperutilisé est public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version) context est le contexte de l'application nameest le nom du fichier contenant la BD = nom de la BD factoryest utilisé pour créer des Cursor. En général on met null versionest le numéro de version de la BD (commençant à 1) 23

24 Du OpenHelper à SQLiteDatabase = de la classe d'aide à l'ouverture à la base de données Le constructeur précédent est un proxy qui est éxécuté rapidement La BD sera réellement créée au lancement de getwritabledatabase()(pour une base en lecture et écriture) ou de getreadabledatabase() (pour une base en lecture seule) sur cet objet de la classe d'aide Bref on a : private class MaBaseOpenHelper extends SQLiteOpenHelper {... }... MaBaseOpenHelper lehelper = new MaBaseOpenHelper(...); SQLiteDatabase mabasedonnees = lehelper.getxxxabledatabase(); et un OpenHelper est (évidemment) associé à une base de données 24

25 Création, mise à jour d'une BD : code du helper Sur un objet d'une classe héritant de SQLiteOpenHelper(classe d'aide), certaines méthodes sont appelées automatiquement : public void oncreate(sqlitedatabase db)est appelée automatiquement par l'environnement d'exécution quand la BD n'existe pas et qu'elle doit être créée. On met le code de création des tables et leurs contenus dans cette méthode public void onupgrade(sqlitedatabase db, int oldversion, int newversion)quand le numéro de version de la BD a été incrémentée Ces deux méthodes sont abstraites dans la classe de base et doivent donc être implémentées dans la classe d'aide 25

26 Code de la classe d'aide MaBaseOpenHelper private class MaBaseOpenHelper extends SQLiteOpenHelper { private static final String REQUETE_CREATION_TABLE = "create table " + TABLE_PLANETES + " (" + COLONNE_ID + " integer primary key autoincrement, " + COLONNE_NOM + " text not null, " + COLONNE_RAYON + " text not null);"; public MaBaseOpenHelper(Context context, String nom, CursorFactory cursorfactory, int version) { super(context, nom, cursorfactory, version); public void oncreate(sqlitedatabase db) { db.execsql(requete_creation_table); public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { // Dans notre cas, nous supprimons la table et ses données pour en // créer une nouvelle ensuite. Vous pouvez créer une logique de mise // à jour propre à votre base permettant de garder les données à la // place. db.execsql("drop table " + TABLE_PLANETES + ";"); // Création de la nouvelle structure. oncreate(db); } } 26

27 Insérer des données dans une SQLiteDatabase (1/2) Ayant obtenu une SQLiteDatabase, on utilise les méthodes de cette classe pour faire des opérations sur la base de données public long insert (String table, String nullcolumnhack, ContentValues values)insère dans la table table les valeurs indiquées par values values, de classe ContentValues, est une suite de couples (clé, valeur) où la clé, de classe String, est le nom de la colonne et valeur, sa valeur Bref on prépare tout, la ligne à insérer en remplissant valuespar des put()successifs puis on lance insert() Exemple : /** * Insère une planète dans la table des planètes. */ public long insertplanete(planete planete) { ContentValues valeurs = new ContentValues(); valeurs.put(colonne_nom, planete.getnom()); valeurs.put(colonne_rayon, planete.getrayon()); return mabasedonnees.insert(table_planetes, null, valeurs); 27 }

28 Insérer des données dans une SQLiteDatabase (2/2) Le second argument nullcolumnhackest le nom de colonne qui aura la valeur NULL si valuesest vide. Cela est du au fait que SQLite ne permet pas de lignes vides. Ainsi avec cette colonne, au moins un champ dans la ligne aura une valeur (= NULL). Bref cela sert seulement lorsque values est vide! Cette méthode insert() retourne le numéro de la ligne insérée ou - 1 en cas d'erreur En fait cette insertion est le Create (C) de CRUD 28

29 Récupérer des données dans une SQLiteDatabase Un premier moyen pour récupérer des données (~ SELECT) est d'utiliser : public Cursor query (String table, String[] columns, String whereclause, String[] selectionargs, String groupby, String having, String orderby) columnsest la liste des colonnes à retourner. Mettre nullsi on veut toutes les colonnes whereclauseest la clause WHERE d'un SELECT (sans le mot WHERE). Mettre nullsi on veut toutes les lignes selectionargsest utile si dans whereclause(~ WHERE), il y a des paramêtres notés?. Les valeurs de ces paramêtres sont indiquées par selectionargs. Bref en général on met null groupbyest la clause GROUP BY d'un SELECT (sans les mots GROUP BY). Utile pour des SELECT COUT(*). Bref on général on met null havingindique les groupes de lignes à retourner (comme HAVING de SQL = un WHERE sur résultat d'un calcul, pas sur les données) orderbyest la clause ORDER BY d'un SELECT (sans les mots ORDER BY). Mettre nullsi on ne tient pas compte de l'ordre 29

30 Exemple de requête SELECT pour Android Euh, la classe android.database.sqlite.sqlitequerybuilderest (semble) faite pour cela. Voir à Par exemple est l'équivalent de db.query(table_contacts, new String[] { KEY_ID, KEY_NAME, KEY_PH_NO }, KEY_ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null); "SELECT KEY_ID, KEY_NAME, KEY_PH_NO FROM TABLE_CONTACTS WHERE KEY_ID='" + id + "'" Heureusement, il y a plus simple, voir diapo suivante! 30

31 rawquery() : requête SELECT pour Android La méthode rawquery()de SQLiteDatabasepermet de lancer des simples requêtes SELECTcomme "SELECT * FROM " + TABLE_CONTACTS WHERE condition paramétrée Sa signature est public Cursor rawquery (String sql, String[] selectionargs) où sqlest une requête SELECT (qui ne doit pas être terminée par ;) et selectionargsest le tableau qui fixe les valeurs des paramètres (noté?) dans la clause WHERE Par exemple : String countquery = "SELECT * FROM " + TABLE_CONTACTS; SQLiteDatabase db = this.getreadabledatabase(); Cursor cursor = db.rawquery(countquery, null); 31

32 L'objet Cursor (1/3) La méthode query()(resp. rawquery()) retourne un android.database.cursor(~ java.sql.resultset). android.database.cursorest une interface. Ce qui est retourné est un objet d'une classe qui implémente cette interface C'est similaire à JDBC. Le Cursorreprésente un ensemble de "lignes" contenant le résultat de la requête SELECT public int getcount ()retourne le nombre de lignes contenues dans le Cursor On se positionne au début du Cursor(= avant la première ligne) par la méthode public boolean movetofirst ()qui retourne falsesi le Cursorest vide On teste si on a une nouvelle ligne à lire par la méthode public boolean movetonext()(qui retourne falsesi on était positionné après la dernière ligne) et qui fait avancer sur la ligne suivante 32

33 L'objet Cursor (2/3) On récupère la columnindexcellule de la ligne par la méthode : public XXX getxxx(int columnindex). columnindexest (évidemment) le numéro de la cellule dans la requête. XXXest le type retourné (String, Short, Int, Long, Float, Double) On peut avoir le numéro d'une colonne à partir de son nom par public abstract int getcolumnindex (String columnname). Finalement on a le code : ArrayList<Station> arrlist = new ArrayList<Station>(); Cursor c = database.rawquery("select * from Stations", null); if(c.movetofirst()){ do { Station s = new Station(); s.setnumber(c.getint(c.getcolumnindex("number"))); s.setname(c.getstring(c.getcolumnindex("name")));... } while(c.movetonext()); } c.close(); 33

34 L'objet Cursor (3/3) On referme le Cursor(et libère ainsi les ressources) par public void close () On peut avoir des renseignements sur le résultat de la requête SELECT (* FROM...) (Méta données) à l'aide du Cursorcomme : public int getcolumncount ()qui retourne le nombre de colonnes contenues dans le Cursor public String getcolumnname (int columnindex)qui retourne le nom de la columnindex ième colonne 34

35 L'accès aux données : un DAO Manipuler le Cursor, c'est bien. C'est "un peu" de la programmation "bas niveau" Bref un DAO (= Data Access Object), voire une façade s'impose! Pour accéder aux données, on masque les bidouilles sous jacentes (requête SQL, etc.) par un objet d'une classe DAO : un bon design pattern! Les bidouilles SQL masquées par le DAO sont : insérer des données dans la BD par la méthode insert()de la classe SQLiteDatabase retourner toutes les données d'une table par la méthode query() de la classe SQLiteDatabase 35

36 Ce sont : Les constantes de l'application private static final int BASE_VERSION = 1; private static final String BASE_NOM = "planetes.db"; private static final String TABLE_PLANETES = "table_planetes"; public static final String COLONNE_ID = "id"; public static final int COLONNE_ID_ID = 0; public static final String COLONNE_NOM = "nom"; public static final int COLONNE_NOM_ID = 1; public static final String COLONNE_RAYON = "rayon"; public static final int COLONNE_RAYON_ID = 2; Euh, si on les met dans une interface, elles sont évidemment toutes public(static final) 36

37 Le code du DAO (1/4) public class PlanetesDB_DAO { private SQLiteDatabase mabasedonnees; private MaBaseOpenHelper basehelper; public PlanetesDB_DAO(Context ctx) { basehelper = new MaBaseOpenHelper(ctx, BASE_NOM, null, BASE_VERSION); } public SQLiteDatabase open() { mabasedonnees = basehelper.getwritabledatabase(); return mabasedonnees; } public void close() { mabasedonnees.close(); } /** * Récupère une planète en fonction de son nom. nom * Le nom de la planète à retourner. La planète dont le nom est égale au paramètre 'nom'. */ public Planete getplanete(string nom) { Cursor c = mabasedonnees.query(table_planetes, new String[] { COLONNE_ID, COLONNE_NOM, COLONNE_RAYON }, null, null, null, COLONNE_NOM + " LIKE " + nom, null); return cursortoplanete(c); } 37

38 Le code du DAO (2/4) // La méthode qui fait le lien entre les bidouilles Android SQL (Cursor) et // l'objet "métier" Planete private Planete cursortoplanete(cursor c) { // Si la requête ne renvoie pas de résultat if (c.getcount() == 0) { c.close(); return null; } } Planete retplanete = new Planete(); // Extraction des valeurs depuis le curseur retplanete.setid(c.getint(colonne_id_id)); retplanete.setnom(c.getstring(colonne_nom_id)); retplanete.setrayon(c.getfloat(colonne_rayon_id)); // Ferme le curseur pour libérer les ressources c.close(); return retplanete; 38

39 Le code du DAO (3/4) /** * Retourne toutes les planètes de la base de données. * Un ArrayList<Planete> contenant toutes les planètes de la BD */ public ArrayList<Planete> getallplanetes() { Cursor c = mabasedonnees.query(table_planetes, new String[] { COLONNE_ID, COLONNE_NOM, COLONNE_RAYON }, null, null, null, null, null); return cursortoplanetes(c); } private ArrayList<Planete> cursortoplanetes(cursor c) { // Si la requête ne renvoie pas de résultat if (c.getcount() == 0) { c.close(); return new ArrayList<Planete>(0); } } ArrayList<Planete> retplanetes = new ArrayList<Planete>(c.getCount()); c.movetofirst(); do { Planete planete = new Planete(); planete.setid(c.getint(colonne_id_id)); planete.setnom(c.getstring(colonne_nom_id)); planete.setrayon(c.getfloat(colonne_rayon_id)); retplanetes.add(planete); } while (c.movetonext()); // Ferme le curseur pour libérer les ressources c.close(); return retplanetes; 39

40 Le code du DAO (4/4) /** * Insère une planète dans la table des planètes. * planete * La planète à insérer. */ public long insertplanete(planete planete) { ContentValues valeurs = new ContentValues(); valeurs.put(colonne_nom, planete.getnom()); valeurs.put(colonne_rayon, planete.getrayon()); return mabasedonnees.insert(table_planetes, null, valeurs); } public void videlabase() { // Dans notre cas, nous supprimons la base et les données pour en // créer une nouvelle ensuite. Vous pouvez créer une logique de mise // à jour propre à votre base permettant de garder les données à la // place. mabasedonnees.execsql("drop table " + TABLE_PLANETES + ";"); // Création de la nouvelle structure. mabasedonnees.execsql(requete_creation_table); } } 40

41 Démonstration Projet ProgAndroidBDJMFProjet dans...\travail 41

42 Retour sur l'ihm : le TableLayout (1/2) Pour afficher des enregistrements une table est appropriée Android propose le TableLayoutcalqué sur l'attribut tablede HTML : <table> <tr><td>et 1</td><td>et 2</td></tr> </table> a pour équivalent dans les fichiers d'ihm d'android : <TableLayout> <TableRow><TextView...>et 1</TextView><TextView...>et 2</TextView></TableRow> </TableLayout> 42

43 Retour sur l'ihm : le TableLayout (2/2) Néanmoins, il faut souvent construire cette TableLayout dynamiquement (on ne connait pas le nombre d'articles à afficher) : TableLayout table = (TableLayout) findviewbyid(r.id.tablelayoutlescontacts); Iterator<Contact> it = arcontacts.iterator(); while (it.hasnext()) { Contact ct = (Contact)it.next(); // création d'une nouvelle TableRow TableRow row = new TableRow(this); TextView tnom = new TextView(this); tnom.settext(ct.getname()); row.addview(tnom); TextView tnumtel = new TextView(this); tnumtel.settext(ct.getphonenumber()); row.addview(tnumtel); table.addview(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); } Le LayoutParamsest un android.view.viewgroup.layoutparams 43

44 Modifier une table : UPDATE de SQL pour Android Pour mettre à jour des lignes dans une table, la méthode utilisée (de la classe SQLiteDatabase) est public int update (String table, ContentValues values, String whereclause, String[] whereargs) où : tableest la table qui doit être mise à jour valuesest une suite de couples (clé, valeur) où la clé, de classe String, est le nom de la colonne et valeur, sa valeur whereclauseest la clause WHERE filtrant les lignes à mettre à jour. Si la valeur est null, toutes les lignes sont mises à jour whereargsindiquent les valeurs à passer aux différents arguments de la clause WHERE qui sont notés? dans whereclause Cette méthode retourne le nombre de ligne qui ont été affectées Exemple : SQLiteDatabase db = this.getwritabledatabase(); ContentValues values = new ContentValues(); values.put(key_name, contact.getname()); values.put(key_ph_no, contact.getphonenumber()); db.update(table_contacts, values, KEY_ID + " =?", new String[] { String.valueOf(contact.getID()) }); 44

45 Supprimer des lignes dans une table : DELETE Pour supprimer des lignes dans une table, la méthode utilisée (de la classe SQLiteDatabase) est public int delete (String table, String whereclause, String[] whereargs) table est la table à manipuler whereclauseest la clause WHERE filtrant les lignes à supprimer. Si la valeur est null, toutes les lignes sont détruites whereargsindiquent les valeurs à passer aux différents arguments de la clause WHERE qui sont notés? dans whereclause Cette méthode retourne le nombre de ligne qui ont été supprimées Exemple : public void deletecontact(contact contact) { SQLiteDatabase db = this.getwritabledatabase(); db.delete(table_contacts, KEY_ID + " =?", new String[] { String.valueOf(contact.getID()) }); db.close(); } 45

46 Bibliographie pour ce chapitre (1/2) Sur les Shared Preferences : Linux Magazine Hors Série N 60, Yohann Melo; page 26 Oleg Mazurashu à droid-application-preferences/ 46

47 Bibliographie pour ce chapitre (2/2) Programmation Android, De la conception au déploiement avec le SDK Google Android 2,Damien Guignard, Julien Chable, Emmanuel Robles ; editions Eyrolles, chapitre 6 Sur SQLite : Tutorial de Lars Vogel : cle.html Tutorial BD et SQLite Android : a-storage.html#db 47

48 Résumé du chapitre 5 Il existe plusieurs techniques pour partager des données entre deux sessions d'une même application ou entre deux applications On peut citer Les Shared Preferences, l'utilisation du système de fichiers (et des fichiers XML) ainsi que la base de données SQLite manipulable par le langage SQL 48

49 Fin 49

Bases de données et fournisseurs de contenu

Bases de données et fournisseurs de contenu 8 Bases de données et fournisseurs de contenu Au sommaire de ce chapitre : Créer des bases de données et utiliser SQLite Utiliser les fournisseurs de contenu, les curseurs et les content values pour stocker,

Plus en détail

Stockage de données sous Android

Stockage de données sous Android Stockage de données sous Android Master 2 informatique 2012-2013 Michel Chilowicz (sous licence CC By-NC-SA) Données temporaires d'une activité Une activité peut être détruite

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

1. Base de données SQLite

1. Base de données SQLite Dans ce TP, nous allons voir comment créer et utiliser une base de données SQL locale pour stocker les informations. La semaine prochaine, ça sera avec un WebService. On repart de l application AvosAvis

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations Projet Viticulture TP 3 : bases de données externes Description du thème Partie 1 : bases de données locales SQLite Partie 2 : projet H2O stockage local Partie 3 : bases de données distantes Partie 4 :

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

Android et le Cloud Computing

Android et le Cloud Computing Android et le Cloud Computing 1 Plan de l'exposé Rappels sur Android et le cloud Présentation de GCM Notions fondamentales de GCM Construire un projet GCM Ecrire un client GCM (récepteur GCM) Ecrire un

Plus en détail

Bases de données et sites WEB Licence d informatique LI345

Bases de données et sites WEB Licence d informatique LI345 Bases de données et sites WEB Licence d informatique LI345 Anne Doucet Anne.Doucet@lip6.fr http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet

Plus en détail

TP Programmation Java / JDBC / Oracle

TP Programmation Java / JDBC / Oracle TP Programmation Java / JDBC / Oracle 1. Connectivité avec une base de données Oracle au travers de l interface JDBC L interface de programmation (API) JDBC (Java DataBase Connectivity) est une librairie

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

PHP 5. La base de données MySql. A. Belaïd 1

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Outils, langage et approche Android Une introduction. Nicolas Stouls nicolas.stouls@insa lyon.fr

Outils, langage et approche Android Une introduction. Nicolas Stouls nicolas.stouls@insa lyon.fr Outils, langage et approche Android Une introduction Nicolas Stouls nicolas.stouls@insa lyon.fr Webographie La bible contenant «tout» : http://developer.android.com/index.html Les supports cette intervention

Plus en détail

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS) PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Initiation aux bases de données (SGBD) Walter RUDAMETKIN Initiation aux bases de données (SGBD) Walter RUDAMETKIN Bureau F011 Walter.Rudametkin@polytech-lille.fr Moi Je suis étranger J'ai un accent Je me trompe beaucoup en français (et en info, et en math, et...)

Plus en détail

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives : ntroduction 1/28 2/28 Anne-Cécile Caron Licence MAGE - Bases de Données 2013-2014 Application base de données Pour le développeur : Quel est l environnement? type de client (mode client serveur, intranet,...)

Plus en détail

Les connexions sans fil avec Android. JMF (Tous droits réservés) 1

Les connexions sans fil avec Android. JMF (Tous droits réservés) 1 Les connexions sans fil avec Android JMF (Tous droits réservés) 1 Plan de l'exposé Wi-Fi : un rappel Démo 1 : trouver les réseaux Wi-Fi Démo 2 : repérer les appareils connectés sur notre réseau Wi-Fi Démo

Plus en détail

I. MySQL : Serveur et SGBD

I. MySQL : Serveur et SGBD Le Système de Gestion de Base de Données MySQL I. MySQL : Serveur et SGBD Menu I. MySQL : Serveur et SGBG II. Création d'une base de données avec MySQL MySQL est un système de gestion et conception de

Plus en détail

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Serveur d'archivage 2007 Installation et utilisation de la BD exist Type du document Procédure d'installation Auteur(s) Eric Bouladier Date de création 26/02/20007 Domaine de diffusion tous Validé par Equipe Versions Date Auteur(s) Modifications V1.00 26/02/2007 Eric Bouladier

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

PHP 4 PARTIE : BASE DE DONNEES

PHP 4 PARTIE : BASE DE DONNEES PHP 4 PARTIE : BASE DE DONNEES 1. Introduction 2. Présentation de MySQL 3. Principe 4. Connexion 5. Interrogation 6. Extraction des données 7. Fonctions de services 8. Traitement des erreurs 9. Travaux

Plus en détail

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux Distribué par Le Projet Documentation d'openoffice.org Table of Contents 1) Préambule...3 2) Télécharger

Plus en détail

Programmation Android L3 informatique

Programmation Android L3 informatique Programmation Android L3 informatique Étienne Payet Département de mathématiques et d informatique Ces transparents sont mis à disposition selon les termes de la Licence Creative Commons Paternité - Pas

Plus en détail

MODE OPERATOIRE OPENOFFICE BASE

MODE OPERATOIRE OPENOFFICE BASE MODE OPERATOIRE OPENOFFICE BASE Openoffice Base est un SGBDR : Système de Gestion de Base de Données Relationnelle. L un des principaux atouts de ce logiciel est de pouvoir gérer de façon efficace et rapide

Plus en détail

Le langage SQL (première partie) c Olivier Caron

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3

Plus en détail

TD/TP 1 Introduction au SDK d Android

TD/TP 1 Introduction au SDK d Android TD/TP 1 Introduction au SDK d Android Romain Raveaux 1 Introduction Android est un système d'exploitation pour téléphone portable de nouvelle génération développé par Google. Celui-ci met à disposition

Plus en détail

Création d une application JEE

Création d une application JEE Création d une application JEE Rédacteurs : Alexandre Baillif, Philippe Lacomme, Raksmey Phan et Michaël PLAN Date : juillet 2010 Mise à jour : Michaël PLAN Date : octobre 2014 Avertissement : - ce document

Plus en détail

Tutoriel d installation de Hibernate avec Eclipse

Tutoriel d installation de Hibernate avec Eclipse Tutoriel d installation de Hibernate avec Eclipse Table des matières 1. Création de la base de données... 4 2. Installation de Hibernate Synchronizer... 5 3. Utilisation de Hibernate... 6 3.1 Création

Plus en détail

Comment Créer une Base de Données Ab Initio

Comment Créer une Base de Données Ab Initio Comment Créer une Base de Données Ab Initio Diffusé par Le Projet Documentation OpenOffice.org Table des Matières 1. Création de la Source de Données...3 2. Ajout de Tables dans une Source de Données...3

Plus en détail

BIRT (Business Intelligence and Reporting Tools)

BIRT (Business Intelligence and Reporting Tools) BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»

Plus en détail

Oracle Database SQL Developer Guide D'Installation Release 4.0 E38928-06

Oracle Database SQL Developer Guide D'Installation Release 4.0 E38928-06 Oracle Database SQL Developer Guide D'Installation Release 4.0 E38928-06 Pour accéder à la documentation détaillée de SQL Developer : voir Oracle Database SQL Developer Installation Guide Installer Oracle

Plus en détail

PHP. Bertrand Estellon. 26 avril 2012. Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214

PHP. Bertrand Estellon. 26 avril 2012. Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214 PHP Bertrand Estellon Aix-Marseille Université 26 avril 2012 Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214 SQLite et PDO Base de données SQLite et PDO SQLite écrit les données relatives à la base dans

Plus en détail

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

Notion de base de données

Notion de base de données Notion de base de données Collection de données opérationnelles enregistrées sur un support adressable et utilisées par les systèmes et les applications Les données doivent être structurées indépendamment

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

Plus en détail

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/ Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : cinzia.digiusto@gmail.com webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Java et les bases de données

Java et les bases de données Michel Bonjour http://cuiwww.unige.ch/~bonjour CENTRE UNIVERSITAIRE D INFORMATIQUE UNIVERSITE DE GENEVE Plan Introduction JDBC: API SQL pour Java - JDBC, Java, ODBC, SQL - Architecture, interfaces, exemples

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

Projet Android (LI260) Cours 2

Projet Android (LI260) Cours 2 Projet Android (LI260) Cours 2 Nicolas Baskiotis Université Pierre et Marie Curie (UPMC) Laboratoire d Informatique de Paris 6 (LIP6) S2-2013/2014 Plan Les ressources Debug Communication entre activités

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Une introduction à la technologie EJB (2/3)

Une introduction à la technologie EJB (2/3) Une introduction à la technologie EJB (2/3) 1 Les singletons des EJB 3.1 1.1 Synchronisation gérée manuellement Depuis la version 3.1, des EJB Statless à instance unique sont maintenant disponibles : ce

Plus en détail

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

cedric.foll@(education.gouv.fr laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

cedric.foll@(education.gouv.fr laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007 A t t a q u e s c o n t r e l e s a p p l i s w e b cedric.foll@(education.gouv.fr laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007 D e l ' u t i l i t é d e l ' a t t a

Plus en détail

Bases de données avancées Introduction

Bases de données avancées Introduction Bases de données avancées Introduction Dan VODISLAV Université de Cergy-Pontoise Master Informatique M1 Cours BDA Plan Objectifs et contenu du cours Rappels BD relationnelles Bibliographie Cours BDA (UCP/M1)

Plus en détail

Programmation d application Bases de données avec Java

Programmation d application Bases de données avec Java Plan du document Programmation d application Bases de données avec Java INT Problématique slide 3 Correspondance diagramme de classe slide 4 UML vers schéma relationnel Programmation BD avec JDBC slide

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Pratique et administration des systèmes

Pratique et administration des systèmes Université Louis Pasteur Licence Informatique (L2) UFR de Mathématiques et Informatique Année 2007/2008 1 But du TP Pratique et administration des systèmes TP10 : Technologie LAMP Le but de ce TP est de

Plus en détail

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 MapReduce Malo Jaffré, Pablo Rauzy ENS 16 avril 2010 Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 Qu est ce que c est? Conceptuellement Données MapReduce est un framework de calcul distribué

Plus en détail

Héritage presque multiple en Java (1/2)

Héritage presque multiple en Java (1/2) Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Compte-rendu de projet de Système de gestion de base de données

Compte-rendu de projet de Système de gestion de base de données Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison

Plus en détail

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

Création de Sous-Formulaires

Création de Sous-Formulaires Création de Sous-Formulaires Révision 1.01 du 02/01/04 Réalisé avec : OOo 1.1.0 Plate-forme / Os : Toutes Distribué par le projet Fr.OpenOffice.org Table des Matières 1 But de ce how-to...3 2 Pré-requis...3

Plus en détail

Mysql. Les requêtes préparées Prepared statements

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

Plus en détail

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres

Plus en détail

LES ACCES ODBC AVEC LE SYSTEME SAS

LES ACCES ODBC AVEC LE SYSTEME SAS LES ACCES ODBC AVEC LE SYSTEME SAS I. Présentation II. SAS/ACCESS to ODBC III. Driver ODBC SAS IV. Driver ODBC SAS Universel V. Version 8 VI. Références I. Présentation Introduction ODBC, qui signifie

Plus en détail

Warren PAULUS. Android SDK et Android x86

Warren PAULUS. Android SDK et Android x86 Android SDK et Android x86 2010/2011 Voici un petit tutoriel pour installer Android de façon à ce qu il soit compatible avec NetBeans et Eclipse, ainsi que l utilisation d Android x86. Ce tutoriel a été

Plus en détail

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Polymorphisme, la classe Object, les package et la visibilité en Java... 1 Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....

Plus en détail

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T> Page 1 sur 5 TP3 Lectures préalables : l Java_II l tutorial Interfaces Thèmes du TP : l la classe Object l Vector l Stack Une pile d'objects Les éléments de la classe Pile sont maintenant des instances

Plus en détail

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework L'objectif de ce document est de poser des bases de réflexion sur la modélisation d'un projet réalisé

Plus en détail

SQL Serveur 2012+ Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

SQL Serveur 2012+ Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise SQL Serveur 2012+ Programme de formation France Belgique Suisse - Canada Microsoft Partner Formez vos salariés pour optimiser la productivité de votre entreprise Dernière mise à jour le : Avril 2014 Des

Plus en détail

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

Flux de données Lecture/Ecriture Fichiers

Flux de données Lecture/Ecriture Fichiers Flux de données Lecture/Ecriture Fichiers 1 Un flux de données est un objet qui représente une suite d octets d un programme pour une certaine destination ou issus d une source pour un programme flux d

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Capacité de mémoire Tablettes

Capacité de mémoire Tablettes Capacité de mémoire Tablettes Les fabricants de tablettes et de smartphones donnent plusieurs indications sur les differentes capacites de stockage de leurs appareils : La mémoire RAM : La mémoire RAM

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13 Programmation Réseau Sécurité Java Jean-Baptiste.Yunes@univ-paris-diderot.fr UFR Informatique 2012-2013 Java Sécurité? différentes sécurités disponibles et contrôlables intégrité contrôle d accès signature/authentification/cryptographie

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Gaël de Chalendar CEA LIST / LIC2M Journée de Présentation des Technologies WebContent INSTN 14/12/2009 Présentation de gsoap Plan

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

Notes de cours : bases de données distribuées et repliquées

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application On souhaite réaliser la connexion d'un programme avec des sources de données Ici, des bases de données relationnelles Deux approches sont possibles qui mettent en œuvre chacune son propre jeu de classes

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

Les BASES de DONNEES dans WampServer

Les BASES de DONNEES dans WampServer Les BASES de DONNEES dans WampServer 1 Définitions Générales Une base de données (BDD) permet d'enregistrer, de stocker, de ranger des données de façon organisée et hiérarchisée. SQL est le langage qui

Plus en détail

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP) Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP) Définition (G. Gardarin) Entrepôt : ensemble de données historisées variant

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Accès aux bases de données

Accès aux bases de données 13 Accès aux bases de données Les bases de données fournissent un mécanisme de stockage persistant pour les données d application et dans bien des cas, elles sont essentielles au fonctionnement des applications.

Plus en détail

Bases de Données relationnelles et leurs systèmes de Gestion

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail