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

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

  • 1.
    Embarquer une basede 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 dePatrick 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 deOlf 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 • OlfSoftware 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 deDelphi • 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ésentationde 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 etC++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 plupartdes 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 veuttravailler 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 solutionest 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) PatrickPrémartin / developpeur-pascal.fr
  • 16.
    La problématique • Embarquerune 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 • Pourla 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 dujour (c) Patrick Prémartin / developpeur-pascal.fr
  • 20.
    La solution dujour • 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 dujour • 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 versionagede la base de données (c) Patrick Prémartin / developpeur-pascal.fr
  • 23.
    • Pour lacré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 choisiTMS 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 ladé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 foisla 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 avoirdiffusé 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 modulede données pour le projet (c) Patrick Prémartin / developpeur-pascal.fr
  • 29.
    • Côté Delphij’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 onAfterConnectje 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 techniquefonctionne 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 pourles 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