SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Embarquer une base de
données locale dans vos
logiciels et applications mobiles
Webinaire du 19 décembre 2019
(c) Patrick Prémartin / developpeur-pascal.fr
Au programme
• Introduction
• La problématique
• La solution du jour
• Conception et versionage de la base de données
• Conception du module de données
• Conclusion
(c) Patrick Prémartin / developpeur-pascal.fr
Présentation
(c) Patrick Prémartin / developpeur-pascal.fr
A propos de Patrick Prémartin
• Ancien utilisateur de Turbo Pascal, amoureux de Delphi depuis toujours,
développeur web depuis NCSA Mosaic…
• Prestataire et formateur à travers sa société Olf Software.
• Editeur du blog https://developpeur-pascal.fr/
• MVP Embarcadero depuis octobre 2017.
• Auteur d’articles, de livres, webinariste et parfois même conférencier.
(c) Patrick Prémartin / developpeur-pascal.fr
A propos de Olf Software
• Depuis octobre 2001 la société de services Olf Software propose des
prestations de conseil, développement et formation sur les
technologies liées au web et au développement logiciel.
• La société édite également des livres, des sites Internet et des
logiciels.
• Site web principal : https://olfsoftware.fr
(c) Patrick Prémartin / developpeur-pascal.fr
Formations Delphi
• Olf Software propose des formations en lien avec Delphi.
• Des formations inter entreprises sont organisées régulièrement et
annoncées sur https://se-former-a-delphi.fr/
• Des formations intra entreprise personnalisées sont faisables sur demande
partout en France et en Europe.
• Olf Software est un organisme de formation professionnelle enregistré en
préfecture et référencé sur Datadock.
Nos formations peuvent être prises en charge par les OPCA/OPCO.
(c) Patrick Prémartin / developpeur-pascal.fr
Les versions de Delphi
• Plusieurs licences de Delphi existent (vendu seul ou dans RAD Studio):
• Academic : pour les établissements d’enseignement et leurs étudiants
• Community Edition : gratuit pour tous, en licence commerciale limitée
• Professional, Enterprise, Architect : pour les entreprises, selon leurs besoins
• Pour toutes informations sur les licences et les tarifs contactez la
société Barnsten sur https://www.barnsten.com/fr/
(c) Patrick Prémartin / developpeur-pascal.fr
Les webinaires précédents
• Je participe régulièrement à des webinaires. Une page leur est
consacrée sur mon blog à l’adresse https://vasur.fr/webinairesdelphi
• Vous y trouverez les rediffusions en vidéos lorsqu’elles sont
disponibles, un PDF de mes présentations, le lien vers les sources des
exemples présentés et des informations complémentaires.
• S’y trouvent aussi les dates et liens d’inscriptions pour les prochains
webinaires, conférences et formations.
(c) Patrick Prémartin / developpeur-pascal.fr
En bref
• Présentation de la société Olf Software
https://www.olfsoftware.fr
• Présentation de Patrick Prémartin
https://www.linkedin.com/in/patrickpremartin/
• Les différentes versions de Delphi
https://www.embarcadero.com/fr/products/delphi
• Voir ou revoir les webinaires précédents
https://vasur.fr/webinairesdelphi
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
• Delphi et C++Builder permettent de faire toutes sortes de logiciels
pour les environnements Windows, macOS, Android, iOS et Linux(*).
• Un outil de déploiement est intégré à RAD Studio pour créer des
logiciels d’installation ou les exécutables à envoyer sur les différents
magasins d’applications ou directement sur les appareils visés.
• Grâce au PAServer (voir le webinaire du 5 novembre) et à l’outil de
déploiement on peut diffuser des fichiers complémentaires au
programme exécutable.
(*) Linux uniquement sur Delphi pour le moment
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
• La plupart des logiciels ont besoin de stocker des données. De
nombreuses solutions existent et sont exploitables très simplement
sous Delphi :
• Fichiers textes (Tinifile, TextFile, TXMLDocument),
• Fichiers binaires (File, File of Record),
• Bases de données client/serveur (dbExpress, FireDAC, IBX),
• Bases de données embarquées (SQLite, IBLite, IB ToGo, Firebird Embedded,
MySQL Embedded)
• Liste loin d’être exhaustive tant il y a de solutions dans le commerce et en
open source pour gérer des données avec Delphi.
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
• Lorsqu’on veut travailler en SQL on peut utiliser les moteurs habituels
pour accéder à de « vraies bases » SQL comme on peut passer par
FireDAC pour travailler avec des API REST en SQL à l’aide des drivers
CDATA désormais fournis avec les licences Enterprise et Architect ou
disponibles à la vente pour les autres versions de Delphi.
• Tout ça est très bien lorsqu’on a un réseau local, une connexion
Internet, un serveur sur lequel mettre le moteur de bases de données
mais ce n’est pas toujours le cas, surtout pour les applications grand
public.
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
• La solution est donc d’embarquer des bases de données directement
avec le programme, qu’il soit en mode desktop ou mobile.
(c) Patrick Prémartin / developpeur-pascal.fr
La problématique
(c) Patrick Prémartin / developpeur-pascal.fr
La problématique
• Embarquer une base de données avec un programme c’est sympa,
mais que se passe-t-il lorsqu’on fait des mises à jour des données côté
éditeur, des mises à jours de données côté utilisateur et des
changements dans la structure de la base de données ?
• Quand les données ne sont modifiées que par l’éditeur, la base
embarquée est un fichier classique et peut écraser la version
disponible chez l’utilisateur.
• Dans les autres cas, c’est compliqué…
(c) Patrick Prémartin / developpeur-pascal.fr
La problématique
• … ou ça ne l’est pas, à vous de voir !
(c) Patrick Prémartin / developpeur-pascal.fr
La problématique
• Pour la suite une connaissance basique de FireDAC et de son
architecture est utile. Vous pouvez regarder les webinaires suivants :
• Utilisation de FireDAC avec la VCL
• Utilisation de FireDAC avec FMX
• Vous pouvez également regarder le webinaire que nous avions
consacré aux solutions de synchronisation de données :
• Des solutions de synchronisation de données
(c) Patrick Prémartin / developpeur-pascal.fr
La solution du jour
(c) Patrick Prémartin / developpeur-pascal.fr
La solution du jour
• La solution que je vous propose aujourd’hui permet de résoudre les
points suivants :
• Avoir une base de données locale sur toutes les plateformes
• La maintenance de la structure de la base de données
• Son utilisation dans un projet
(c) Patrick Prémartin / developpeur-pascal.fr
La solution du jour
• Nous allons utiliser une base de données SQLite et un projet
FireMonkey.
• Ca fonctionnerait aussi pour un projet VCL, IntraWeb ou n’importe
quel autre type de projet sur lequel les composants FireDAC
fonctionnent.
• Je fais la démonstration sur Delphi mais c’est aussi valable pour les
utilisateurs de C++Builder sous réserve d’adapter le code source.
(c) Patrick Prémartin / developpeur-pascal.fr
Conception et versionage de la
base de données
(c) Patrick Prémartin / developpeur-pascal.fr
• Pour la création de la base de données j’utilise TMS Data Modeler de
TMS Software.
• C’est un logiciel payant, disponible dans la licence TMS All Access ou
en achat direct.
• Il permet de dessiner des MCD, gérer les relations entre les tables et
d’une manière générale faire tout ce qu’on fait pour créer des bases
de données.
• Il gère plusieurs moteurs de bases SQL et permet d’exporter les
requêtes de création et de modification.
(c) Patrick Prémartin / developpeur-pascal.fr
• J’ai choisi TMS Data Modeler car il st simple d’utilisation et que je l’ai
avec ma licence All Access.
• D’autres logiciels ayant les mêmes fonctionnalités existent sur le
marché et en open source.
• Les détenteurs de licences Architect de Delphi, C++Builder et RAD
Studio bénéficient d’une licence pour Aqua Data Studio qui va au delà
de la simple conception de base de données.
(c) Patrick Prémartin / developpeur-pascal.fr
• Pour la démo je crée une base SQLite avec deux tables : livres et
auteurs.
• Les livres ont un titre, un GENCOD, un ou plusieurs auteurs.
• Les auteurs ont un nom et un prénom.
(c) Patrick Prémartin / developpeur-pascal.fr
• Une fois la base créée on exporte les requêtes SQL permettant de la
créer et on l’archive dans TMS Data Modeler.
(c) Patrick Prémartin / developpeur-pascal.fr
• Après avoir diffusé le logiciel et donc avoir déjà des utilisateurs on
s’aperçoit que les auteurs peuvent avoir aussi un pseudo.
• Comme il existe des bases déjà remplies et qu’on ne peut les écraser il
faut donc faire une mise à jour de la structure.
• On ajoute le nouveau champ dans la table auteurs et on génère le
script de mise à jour. Bien entendu on archive également les
modifications de la base.
(c) Patrick Prémartin / developpeur-pascal.fr
Conception du module de
données pour le projet
(c) Patrick Prémartin / developpeur-pascal.fr
• Côté Delphi j’utilise un TDataModule pour gérer ma base de données.
• Il nous faut un composant TFDConnexion pour gérer la base et ses
fonctionnalités. Il utilisera un driver SQLite.
• Pensez à ajouter le driver SQLite à vos projets depuis l’outil de
déploiement puisqu’il est désormais à lier aux programmes sur
macOS. (pour des histoires de sandbox)
• En onBeforeConnect je paramètre ma connexion et pointe sur le
fichier de la base selon l’OS.
(c) Patrick Prémartin / developpeur-pascal.fr
• En onAfterConnect je teste la version en cours de la base de données
et la mets à jour si nécessaire.
• Les requêtes de création et de mise à jour sont stockées dans un
TFDScript(*) mais on peut aussi les envoyer manuellement
directement depuis le source par des appels à
TFDConnexion.ExecSQL().
(*) TFDScript était « cassé » en 10.3.2 Rio, corrigé en 10.3.3 Rio
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
(c) Patrick Prémartin / developpeur-pascal.fr
• Cette technique fonctionne bien entendu pour tout type de bases de
données SQL.
• Pensez à faire des backups des bases de données locales surtout
avant d’en modifier la structure.
• Si vous le pouvez proposez une synchronisation sur un service de
cloud ou d’exporter les données pour que vos utilisateurs ne perdent
rien en cas de crash ou d’anomalie lors d’une mise à jour de la base.
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
• Comme pour les webinaires précédents, ce PDF et l’éventuel replay
seront mis à disposition sur le blog https://developpeur-pascal.fr
• Prochain événement en live :
=> rencontres développeurs / meetups, conférences, présentations
sur demandes, contactez-nous si vous êtes intéressés.
• Prochain webinaire le mardi 28 janvier 2019 consacré à l’utilisation du
SVG sous Delphi.
(c) Patrick Prémartin / developpeur-pascal.fr
Questions / réponses
(c) Patrick Prémartin / developpeur-pascal.fr

Contenu connexe

Tendances

Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixteAlphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixteAlphorm
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Microsoft
 
Réalisation d’applications Desktop Windows/Mac Os avec PHP
Réalisation d’applications Desktop Windows/Mac Os avec PHPRéalisation d’applications Desktop Windows/Mac Os avec PHP
Réalisation d’applications Desktop Windows/Mac Os avec PHPAlexandre Morgaut
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPatelier111
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Aurelien Navarre
 
Deployment of a multi-site platform
Deployment of a multi-site platformDeployment of a multi-site platform
Deployment of a multi-site platformKaliop-slide
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet DrupalAdyax
 
BreizhCamp - Drupal7 dans le cloud avec Azure
BreizhCamp - Drupal7 dans le cloud avec AzureBreizhCamp - Drupal7 dans le cloud avec Azure
BreizhCamp - Drupal7 dans le cloud avec AzureNicolas Georgeault
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)LaNetscouade
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open SourceIppon
 
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Componentscjolif
 
Presentation master
Presentation masterPresentation master
Presentation mastersamir
 
Alphorm.com Formation Edition Scientifique avec Latex (2e)
Alphorm.com Formation Edition Scientifique avec Latex (2e) Alphorm.com Formation Edition Scientifique avec Latex (2e)
Alphorm.com Formation Edition Scientifique avec Latex (2e) Alphorm
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Xavier Lacot
 

Tendances (15)

Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixteAlphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
Réalisation d’applications Desktop Windows/Mac Os avec PHP
Réalisation d’applications Desktop Windows/Mac Os avec PHPRéalisation d’applications Desktop Windows/Mac Os avec PHP
Réalisation d’applications Desktop Windows/Mac Os avec PHP
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
 
Deployment of a multi-site platform
Deployment of a multi-site platformDeployment of a multi-site platform
Deployment of a multi-site platform
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet Drupal
 
BreizhCamp - Drupal7 dans le cloud avec Azure
BreizhCamp - Drupal7 dans le cloud avec AzureBreizhCamp - Drupal7 dans le cloud avec Azure
BreizhCamp - Drupal7 dans le cloud avec Azure
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et Administration
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Components
 
Presentation master
Presentation masterPresentation master
Presentation master
 
Alphorm.com Formation Edition Scientifique avec Latex (2e)
Alphorm.com Formation Edition Scientifique avec Latex (2e) Alphorm.com Formation Edition Scientifique avec Latex (2e)
Alphorm.com Formation Edition Scientifique avec Latex (2e)
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
 

Similaire à Embarquer une base de données locale dans vos logiciels et applications mobiles

Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphipprem
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphipprem
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXpprem
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...Microsoft
 
Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !pprem
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation Microsoft
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?pprem
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureThomas Conté
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...pprem
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 
Diffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourDiffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourpprem
 
HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologiewyggio
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Jonathan Le Guellec
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?ekino
 
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm
 

Similaire à Embarquer une base de données locale dans vos logiciels et applications mobiles (20)

Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphi
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphi
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMX
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
 
Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
Diffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourDiffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jour
 
HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologie
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques
 
Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
 

Plus de pprem

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game enginepprem
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environmentpprem
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeypprem
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéopprem
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphipprem
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitairespprem
 
Développer une application pour Android TV avec Delphi
Développer une application pour Android TV avec DelphiDévelopper une application pour Android TV avec Delphi
Développer une application pour Android TV avec Delphipprem
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilespprem
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Androidpprem
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLpprem
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeypprem
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de fraispprem
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succèspprem
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internetpprem
 
Trafic
TraficTrafic
Traficpprem
 

Plus de pprem (15)

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game engine
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkey
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéo
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
 
Développer une application pour Android TV avec Delphi
Développer une application pour Android TV avec DelphiDévelopper une application pour Android TV avec Delphi
Développer une application pour Android TV avec Delphi
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobiles
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Android
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCL
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkey
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de frais
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succès
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internet
 
Trafic
TraficTrafic
Trafic
 

Embarquer une base de données locale dans vos logiciels et applications mobiles

  • 1. Embarquer une base de données locale dans vos logiciels et applications mobiles Webinaire du 19 décembre 2019 (c) Patrick Prémartin / developpeur-pascal.fr
  • 2. Au programme • Introduction • La problématique • La solution du jour • Conception et versionage de la base de données • Conception du module de données • Conclusion (c) Patrick Prémartin / developpeur-pascal.fr
  • 3. Présentation (c) Patrick Prémartin / developpeur-pascal.fr
  • 4. A propos de Patrick Prémartin • Ancien utilisateur de Turbo Pascal, amoureux de Delphi depuis toujours, développeur web depuis NCSA Mosaic… • Prestataire et formateur à travers sa société Olf Software. • Editeur du blog https://developpeur-pascal.fr/ • MVP Embarcadero depuis octobre 2017. • Auteur d’articles, de livres, webinariste et parfois même conférencier. (c) Patrick Prémartin / developpeur-pascal.fr
  • 5. A propos de Olf Software • Depuis octobre 2001 la société de services Olf Software propose des prestations de conseil, développement et formation sur les technologies liées au web et au développement logiciel. • La société édite également des livres, des sites Internet et des logiciels. • Site web principal : https://olfsoftware.fr (c) Patrick Prémartin / developpeur-pascal.fr
  • 6. Formations Delphi • Olf Software propose des formations en lien avec Delphi. • Des formations inter entreprises sont organisées régulièrement et annoncées sur https://se-former-a-delphi.fr/ • Des formations intra entreprise personnalisées sont faisables sur demande partout en France et en Europe. • Olf Software est un organisme de formation professionnelle enregistré en préfecture et référencé sur Datadock. Nos formations peuvent être prises en charge par les OPCA/OPCO. (c) Patrick Prémartin / developpeur-pascal.fr
  • 7. Les versions de Delphi • Plusieurs licences de Delphi existent (vendu seul ou dans RAD Studio): • Academic : pour les établissements d’enseignement et leurs étudiants • Community Edition : gratuit pour tous, en licence commerciale limitée • Professional, Enterprise, Architect : pour les entreprises, selon leurs besoins • Pour toutes informations sur les licences et les tarifs contactez la société Barnsten sur https://www.barnsten.com/fr/ (c) Patrick Prémartin / developpeur-pascal.fr
  • 8. Les webinaires précédents • Je participe régulièrement à des webinaires. Une page leur est consacrée sur mon blog à l’adresse https://vasur.fr/webinairesdelphi • Vous y trouverez les rediffusions en vidéos lorsqu’elles sont disponibles, un PDF de mes présentations, le lien vers les sources des exemples présentés et des informations complémentaires. • S’y trouvent aussi les dates et liens d’inscriptions pour les prochains webinaires, conférences et formations. (c) Patrick Prémartin / developpeur-pascal.fr
  • 9. En bref • Présentation de la société Olf Software https://www.olfsoftware.fr • Présentation de Patrick Prémartin https://www.linkedin.com/in/patrickpremartin/ • Les différentes versions de Delphi https://www.embarcadero.com/fr/products/delphi • Voir ou revoir les webinaires précédents https://vasur.fr/webinairesdelphi (c) Patrick Prémartin / developpeur-pascal.fr
  • 10. Introduction (c) Patrick Prémartin / developpeur-pascal.fr
  • 11. Introduction • Delphi et C++Builder permettent de faire toutes sortes de logiciels pour les environnements Windows, macOS, Android, iOS et Linux(*). • Un outil de déploiement est intégré à RAD Studio pour créer des logiciels d’installation ou les exécutables à envoyer sur les différents magasins d’applications ou directement sur les appareils visés. • Grâce au PAServer (voir le webinaire du 5 novembre) et à l’outil de déploiement on peut diffuser des fichiers complémentaires au programme exécutable. (*) Linux uniquement sur Delphi pour le moment (c) Patrick Prémartin / developpeur-pascal.fr
  • 12. Introduction • La plupart des logiciels ont besoin de stocker des données. De nombreuses solutions existent et sont exploitables très simplement sous Delphi : • Fichiers textes (Tinifile, TextFile, TXMLDocument), • Fichiers binaires (File, File of Record), • Bases de données client/serveur (dbExpress, FireDAC, IBX), • Bases de données embarquées (SQLite, IBLite, IB ToGo, Firebird Embedded, MySQL Embedded) • Liste loin d’être exhaustive tant il y a de solutions dans le commerce et en open source pour gérer des données avec Delphi. (c) Patrick Prémartin / developpeur-pascal.fr
  • 13. Introduction • Lorsqu’on veut travailler en SQL on peut utiliser les moteurs habituels pour accéder à de « vraies bases » SQL comme on peut passer par FireDAC pour travailler avec des API REST en SQL à l’aide des drivers CDATA désormais fournis avec les licences Enterprise et Architect ou disponibles à la vente pour les autres versions de Delphi. • Tout ça est très bien lorsqu’on a un réseau local, une connexion Internet, un serveur sur lequel mettre le moteur de bases de données mais ce n’est pas toujours le cas, surtout pour les applications grand public. (c) Patrick Prémartin / developpeur-pascal.fr
  • 14. Introduction • La solution est donc d’embarquer des bases de données directement avec le programme, qu’il soit en mode desktop ou mobile. (c) Patrick Prémartin / developpeur-pascal.fr
  • 15. La problématique (c) Patrick Prémartin / developpeur-pascal.fr
  • 16. La problématique • Embarquer une base de données avec un programme c’est sympa, mais que se passe-t-il lorsqu’on fait des mises à jour des données côté éditeur, des mises à jours de données côté utilisateur et des changements dans la structure de la base de données ? • Quand les données ne sont modifiées que par l’éditeur, la base embarquée est un fichier classique et peut écraser la version disponible chez l’utilisateur. • Dans les autres cas, c’est compliqué… (c) Patrick Prémartin / developpeur-pascal.fr
  • 17. La problématique • … ou ça ne l’est pas, à vous de voir ! (c) Patrick Prémartin / developpeur-pascal.fr
  • 18. La problématique • Pour la suite une connaissance basique de FireDAC et de son architecture est utile. Vous pouvez regarder les webinaires suivants : • Utilisation de FireDAC avec la VCL • Utilisation de FireDAC avec FMX • Vous pouvez également regarder le webinaire que nous avions consacré aux solutions de synchronisation de données : • Des solutions de synchronisation de données (c) Patrick Prémartin / developpeur-pascal.fr
  • 19. La solution du jour (c) Patrick Prémartin / developpeur-pascal.fr
  • 20. La solution du jour • La solution que je vous propose aujourd’hui permet de résoudre les points suivants : • Avoir une base de données locale sur toutes les plateformes • La maintenance de la structure de la base de données • Son utilisation dans un projet (c) Patrick Prémartin / developpeur-pascal.fr
  • 21. La solution du jour • Nous allons utiliser une base de données SQLite et un projet FireMonkey. • Ca fonctionnerait aussi pour un projet VCL, IntraWeb ou n’importe quel autre type de projet sur lequel les composants FireDAC fonctionnent. • Je fais la démonstration sur Delphi mais c’est aussi valable pour les utilisateurs de C++Builder sous réserve d’adapter le code source. (c) Patrick Prémartin / developpeur-pascal.fr
  • 22. Conception et versionage de la base de données (c) Patrick Prémartin / developpeur-pascal.fr
  • 23. • Pour la création de la base de données j’utilise TMS Data Modeler de TMS Software. • C’est un logiciel payant, disponible dans la licence TMS All Access ou en achat direct. • Il permet de dessiner des MCD, gérer les relations entre les tables et d’une manière générale faire tout ce qu’on fait pour créer des bases de données. • Il gère plusieurs moteurs de bases SQL et permet d’exporter les requêtes de création et de modification. (c) Patrick Prémartin / developpeur-pascal.fr
  • 24. • J’ai choisi TMS Data Modeler car il st simple d’utilisation et que je l’ai avec ma licence All Access. • D’autres logiciels ayant les mêmes fonctionnalités existent sur le marché et en open source. • Les détenteurs de licences Architect de Delphi, C++Builder et RAD Studio bénéficient d’une licence pour Aqua Data Studio qui va au delà de la simple conception de base de données. (c) Patrick Prémartin / developpeur-pascal.fr
  • 25. • Pour la démo je crée une base SQLite avec deux tables : livres et auteurs. • Les livres ont un titre, un GENCOD, un ou plusieurs auteurs. • Les auteurs ont un nom et un prénom. (c) Patrick Prémartin / developpeur-pascal.fr
  • 26. • Une fois la base créée on exporte les requêtes SQL permettant de la créer et on l’archive dans TMS Data Modeler. (c) Patrick Prémartin / developpeur-pascal.fr
  • 27. • Après avoir diffusé le logiciel et donc avoir déjà des utilisateurs on s’aperçoit que les auteurs peuvent avoir aussi un pseudo. • Comme il existe des bases déjà remplies et qu’on ne peut les écraser il faut donc faire une mise à jour de la structure. • On ajoute le nouveau champ dans la table auteurs et on génère le script de mise à jour. Bien entendu on archive également les modifications de la base. (c) Patrick Prémartin / developpeur-pascal.fr
  • 28. Conception du module de données pour le projet (c) Patrick Prémartin / developpeur-pascal.fr
  • 29. • Côté Delphi j’utilise un TDataModule pour gérer ma base de données. • Il nous faut un composant TFDConnexion pour gérer la base et ses fonctionnalités. Il utilisera un driver SQLite. • Pensez à ajouter le driver SQLite à vos projets depuis l’outil de déploiement puisqu’il est désormais à lier aux programmes sur macOS. (pour des histoires de sandbox) • En onBeforeConnect je paramètre ma connexion et pointe sur le fichier de la base selon l’OS. (c) Patrick Prémartin / developpeur-pascal.fr
  • 30. • En onAfterConnect je teste la version en cours de la base de données et la mets à jour si nécessaire. • Les requêtes de création et de mise à jour sont stockées dans un TFDScript(*) mais on peut aussi les envoyer manuellement directement depuis le source par des appels à TFDConnexion.ExecSQL(). (*) TFDScript était « cassé » en 10.3.2 Rio, corrigé en 10.3.3 Rio (c) Patrick Prémartin / developpeur-pascal.fr
  • 31. Conclusion (c) Patrick Prémartin / developpeur-pascal.fr
  • 32. • Cette technique fonctionne bien entendu pour tout type de bases de données SQL. • Pensez à faire des backups des bases de données locales surtout avant d’en modifier la structure. • Si vous le pouvez proposez une synchronisation sur un service de cloud ou d’exporter les données pour que vos utilisateurs ne perdent rien en cas de crash ou d’anomalie lors d’une mise à jour de la base. (c) Patrick Prémartin / developpeur-pascal.fr
  • 33. Conclusion • Comme pour les webinaires précédents, ce PDF et l’éventuel replay seront mis à disposition sur le blog https://developpeur-pascal.fr • Prochain événement en live : => rencontres développeurs / meetups, conférences, présentations sur demandes, contactez-nous si vous êtes intéressés. • Prochain webinaire le mardi 28 janvier 2019 consacré à l’utilisation du SVG sous Delphi. (c) Patrick Prémartin / developpeur-pascal.fr
  • 34. Questions / réponses (c) Patrick Prémartin / developpeur-pascal.fr