Déployer une base de données (Android)

Application Android

Développer une application Android est devenue simple depuis l’arrivée de Firemonkey. Je pense que tout le monde a déjà essayé de faire une Form avec un bouton et un ShowMessage, mais pour déployer une base de données …

En revanche dans 90% des cas, une application a besoin d’une base de données. Je trouve que l’aide en français sur ce point est très maigre..

Pour des projets tel qu’une application, j’apprécie de travailler avec des bases SQLite et les composants FireDAC.

DB Browser permet de travailler rapidement et facilement sur la base de données depuis son PC.

La base de données

Pour utiliser la base de données sur l’application il suffit de poser un TFDConnection et régler la propriété DriverName sur SQLite.

Attention à la propriété Connected, il est préférable de la laisser à False en conception et l’activer manuellement dans un événement tel que FormShow ou lors de la première requête.

L’événement BeforeConnect du TFDConnection me permet de spécifier le chemin de la base.
Par exemple pour un fonctionnement sous Windows :

procedure TMaForm.FormShow(Sender: TObject);
begin
   FDConnection.Connected := True;
end;
 
procedure TFormMain.FDConnectionBeforeConnect(Sender: TObject);
begin
   FDConnection.Params.Values['Database'] := 'D:\Application\Database\Data.db3';
 
   if not FileExists(Cnx.Params.Values['Database']) then
      raise Exception.Create('Database not found.');
end;

Ensuite sous Android, c’est un peu différent. On ne peut pas déployer la base de données n’importe ou. L’unité System.IOUtils permet d’accéder au TPath et d’avoir un endroit accessible pour « déposer » la base.

procedure TFormMain.FDConnectionBeforeConnect(Sender: TObject);
begin
   FDConnection.Params.Values['Database'] := 'D:\Application\Database\Data.db3';
 
   {$IF DEFINED(ANDROID)}
      FDConnection.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'Data.db3');
   {$ENDIF}
 
   if not FileExists(Cnx.Params.Values['Database']) then
      raise Exception.Create('Database not found.');
end;

Base de données embarquée

Maintenant que la connexion fonctionne sous Windows nous allons voir pour Android. Avec le TPath nous savons ou va se trouver la base.

Pour déployer la base il faut l’ajouter au projet (par un glisser-déposer ou clic-droit > ajouter…).

Ainsi le fichier SQLite apparaît dans l’arborescence au côté des fichiers .pas et .dfm de l’application.

Pour déployer la base de données sur le périphérique il faut passer par le menu [Projet > Déploiement]. Il faut se positionner sur la liste déroulante [Toutes les configurations > Android plate-forme] et vérifier que la base données est cochée et le Remote Path sur .\assets\internal.

Lors du lancement la base de données est déployer sur le périphérique et la connexion fonctionne ! 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*