Android API de Persistance. James Douglass Lefruit Ingénieur de Recherche, INRIA Grenoble

Documents pareils
Bases de données et fournisseurs de contenu

Stockage de données sous Android

1. Base de données SQLite

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

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)

Programmation Android L3 informatique

OpenPaaS Le réseau social d'entreprise

CREATION WEB DYNAMIQUE

Information utiles. webpage : Google+ : digiusto/

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

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

Projet Android (LI260) Cours 2

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

I4 : Bases de Données

Programmer en JAVA. par Tama

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

PHP. PHP et bases de données

Création et Gestion des tables

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)

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

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Olivier Mondet

Java DataBaseConnectivity

TP SIN Programmation sur androïde Support : eclipse

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

Le Langage De Description De Données(LDD)

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

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

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

Objectifs du TP : Initiation à Access

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

Les BASES de DONNEES dans WampServer

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

Développement Android. J.-F. Couchot

Langage SQL : créer et interroger une base

Bases de données relationnelles

Cours Bases de données

A QUOI SERVENT LES BASES DE DONNÉES?

Application web de gestion de comptes en banques

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

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

Encryptions, compression et partitionnement des données

Accès aux bases de données

Cours Bases de données 2ème année IUT

Mysql avec EasyPhp. 1 er mars 2006

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

Développement de base de données Microsoft SQL Server Durée : 5 jours Référence : DPSQL12. Contenu

1/ Présentation de SQL Server :

IFT3030 Base de données. Chapitre 1 Introduction

PDO : PHP Data Object 1/13

I. MySQL : Serveur et SGBD

Paginer les données côté serveur, mettre en cache côté client

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

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

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

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

Java Licence Professionnelle CISII,

Les bases de données

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

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

UML et les Bases de Données

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

PHP 4 PARTIE : BASE DE DONNEES

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

as Architecture des Systèmes d Information

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

Structure fonctionnelle d un SGBD

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

SQL Historique

Création d une application JEE

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Education Delivery Intelligent Tool

Plan du cours. Historique du langage Nouveautés de Java 7

La base de données XML exist. A. Belaïd

Stockage du fichier dans une table mysql:

Développement sous Android

SQL Parser XML Xquery : Approche de détection des injections SQL

Gestion de base de données

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

TP3 : Creation de tables 1 seance

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

Java et les bases de données

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Projet de programmation (IK3) : TP n 1 Correction

Compétences Business Objects

Hala Skaf-Molli. Nancy-Université 14 mai 2007

Bible MySQL! La première version de MySQL est apparue en Cette première version est créée pour un usage personnel à partir de msql.

Langage Java. Classe de première SI

Pratique et administration des systèmes

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

TD/TP PAC - Programmation n 3

Bases de données avancées

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Transcription:

Android API de Persistance James Douglass Lefruit Ingénieur de Recherche, INRIA Grenoble

Android Les Préférences SharedPreferences Stockage SQLite sur Android Introduction Générale à SQLite Les API SQLite sur Android SQLiteOpenHelper Création de base de données et des schemas Les Curseurs (Cursor) Operations de sélection, d insertion et de mise à jour

Préférences SharedPreferences Mécanisme de stockage de données de configurations d une application dans un fichier xml Les données peuvent avoir plusieurs portées MODE_PRIVATE, accessible en lecture/écriture seulement aux composants d une meme application; vivement conseillé par Google en guise de sécurité MODE_WORLD_READABLE, accessible seulement en lecture seule par toute autre application; Google déconseille leur usage n étant pas trop fiable MODE_WORLD_WRITEABLE, accessible seulement en lecture seule par toute autre application; Google déconseille leur usage n étant pas trop fiable Localisation des fichiers préferences /data/data/nom_package/shared_prefs/ Exemple de fichier préférence Syntaxe générale : type, clef/valeur <?xml version='1.0' encoding='utf-8' standalone='yes'?> <map> <string name="app_version" value="1.0" /> </map>

SharedPreferences Gestionnaire de préference via Context Permet de créer ou charger un fichier préférence pour le lire ou l editer Ex: SharedPreferences sharedprefs = this.getbasecontext().getsharedpreferences ( "config", Context.MODE_PRIVATE); //retourne app_version si elle existe ou la valeur par defaut : unkown; sharedprefs.getstring("app_version", "unknown"); SharedPreferences.Editor editor = sharedprefs.edit(); editor.putstring("app_version", "2.0"); //faut faire commit pour stocker la valeur editor.commit(); //maintenant app_version retournera 2.0 car elle est creee sharedprefs.getstring("app_version", "unknown");

SQLite Moteur de base de données relationnelles écrit en C Permet de manipuler des données avec le langage de requete SQL Les données sont stockées dans des fichiers binaires accessibles par l outil en ligne de commande sqlite3 Disponible sous Android par l intermediaire de l API du framework

API SQLite SQLiteOpenHelper Classe abstraite qui encapsule les mécanisme de création/manipulation de base et objets SQLite Crée par défaut la base de donné dans la partition de donnée du telephone /data/data/nom_package/databases/ Création de base de donnée Il faut étendre la classe SQLiteOpenHelper puis redéfinir ces deux méthodes oncreate (), invoqué si la base n a pas encore été créée OnUpgrade(), si la version de la base change et mérite une mise à jour

API SQLite public class TestSqliteHelper extends SQLiteOpenHelper { private final static String TAG="TestSQliteHelper"; public static final String DATABASE_NAME="employe.db"; public static final String EMP_TABLE="contact"; //texte en langage sql de creation d'une table private static final String EMP_SCHEMA="CREATE TABLE employe (_id integer primary key autoincrement,"+ "nom VARCHAR(255) NULL DEFAULT NULL, " + "prenom VARCHAR(255) NULL DEFAULT NULL, " + "poste VARCHAR(255) NULL DEFAULT NULL, " + ");"; //Par convention, un champ id est plutot nommé _id pour Android public static final String _ID="_id"; private static final int DB_VERSION=1; public TestSqliteHelper(Context context){ super(context, DATABASE_NAME, null, DB_VERSION); } @Override public void oncreate(sqlitedatabase db) { Log.v(TAG, "Creating INRIA database table"); db.execsql(emp_schema); } @Override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { Log.v(TAG, "Upgrading database"); } }

API SQLite Création de la base Instancier la classe fille de SQLiteOpenHelper en lui passant le contexte de l application Invoquer la méthode getwritabledatabase() de la classe fille A cet instant, la méthode oncreate est exécutée pour créer la base

//Exemple de mise en œuvre de la base public class TestSqlite extends Activity { private SQLiteOpenHelper dbhelper; private SQLiteDatabase database; API SQLite public void oncreate(bundle savedinstance){ super.oncreate(savedinstance); setcontentview(r.layout.main); this.dbhelper = new TestSqliteHelper(this.getBaseContext()); } } //maintenant la base est crée avec l appel de la methode suivante this.database = this.dbhelper.getwritabledatabase(); //faut toujours fermer la base this.database.close();

API SQLite Requete SQL et Curseur(Cursor) Les requêtes SQL se font via l objet Database retournée par getwritabledatabase() ou getreadabledatabase() Les requêtes utilisent les clauses SQL sous forme d argument fourni à la méthode query() de Database Retourner la liste de tous les employes en SQL brut : select * from employe; API SQLite» Database database=sqlitehelper.getwritabledatabase();» Cursor cursor=database.query("employe", null, null, null, null, null, null) L objet Cursor permet de parcourir les enregistrements retournés par la requête en utilisant la methode movetonext() dans une boucle movetonext() retourne true ou false pour indiquer la présence ou l absence de données L API SQLite permet de lire la donnée d une colonne via son numéro d indice qui peut être retourné avec la méthode getcolumindex du curseur cursor.getstring(cursor.getcolumnindex("nom"));

API SQLite Requêtes avec paramètre Permet de filtrer sa requête avec des valeurs contenu dans des variables Les paramètres sont indiqués par des points d interrogation? Retourner le prénom et nom des employés dont le poste est gestion En SQL: select nom,prenom from employe where poste='gestion ; API SQLite: database.query("employe", new String[]{"nom","prenom"}, " poste =? ", new String[]{"gestion"}, null, null, null)

API SQLite Insertion de données L insertion de données se fait via la méthode insert() Les données à inserer sont fournis via un objet de type ContentValues contenant le couple nom colonne et valeur Inserer un nouvel employe En SQL : insert into employe(nom,prenom,poste) values ('Claude,'Bernard','informatique') API SQLite ContentValues data = New ContentValues(); data.put("nom", "Claude"); data.put("prenom", "Bernard"); data.put("poste", "Informatique"); this.database.insert("employe", null, data);