Connexion à une base de données SQLite (FireDAC)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Connectivité des bases de données (FireDAC)

Cette rubrique explique comment établir la connexion aux fichiers d'une base de données SQLite.

Versions prises en charge

Le pilote natif FireDAC prend en charge la base de données SQLite version 3.0 et ultérieure. Pour en savoir plus sur l'utilisation de SQLite dans FireDAC pour une application Delphi, lisez "Utilisation de SQLite avec FireDAC".

Logiciel client

FireDAC prend en charge deux modes de liaison de la bibliothèque SQLite :

  • Liaison statique -- les bibliothèques client suivantes sont liées de façon statique dans l'application :
    • Win32 - x86 sqlite3_x86.obj
    • Win64 - x64 sqlite3_x64.obj
    • macOS - x86 libcgsqlite3.dylib (déploiement nécessaire)
    • iOSDevice32 - libsqlite.a
    • iOSDevice64 - libsqlite.a
    • Android - libsqlite.a

FireDAC fournit des binaires SQLite 3.9.2.

Remarque: Veuillez noter que le cryptage de base de données SQLite est uniquement supporté pour la liaison statique.
  • Liaison dynamique -- les bibliothèques client suivantes doivent être disponibles pour ouvrir une base de données SQLite :
    • Win32 - x86 SQLITE3.DLL
    • Win64 - x64 SQLITE3.DLL
    • macOS - libsqlite3.dylib
    • iOSDevice32 - libsqlite3.dylib
    • iOSDevice64 - libsqlite3.dylib
    • Android - libsqlite.so

Nous recommandons l'utilisation des versions 3.7.7.1 ou ultérieures. Il s'agit du mode par défaut pour le simulateur iOS.

Remarque: SQLite est préinstallé sur toutes les plates-formes, à l'exception de Windows. La bibliothèque est compilée par défaut avec des capacités limitées pour les métadonnées de colonnes (SQLITE_ENABLE_COLUMN_METADATA n'est pas défini). Par conséquent, FireDAC risque de ne pas détecter si le mode d'incrémentation automatique des colonnes est disponible ou s'il a été activé ou désactivé.

Vous pouvez télécharger :

  • La version la plus récente de la DLL x86 ici ("Precompiled Binaries For Windows", paragraphe "This is a DLL") et la placer dans un dossier inclus dans votre variable d'environnement PATH (par exemple, dossier System32) ou dans le dossier EXE de votre application.
  • La version de la DLL x64 ici (EN) (dossier sqlite-netFx40-binary-x64-xxxxx.zip). Effectuez l'extraction dans un dossier, copiez SQLite.Interop.DLL dans SQLITE3.DLL, puis placez-la comme ci-dessus.

Pour choisir le mode de liaison, vous devez modifier le fichier FireDAC.inc :

  • définissez FireDAC_SQLITE_STATIC pour une liaison statique.
  • annulez la définition de FireDAC_SQLITE_STATIC pour une liaison dynamique.
Remarque: Le fichier FireDAC.inc se trouve sous C:\Program Files (x86)\Embarcadero\Studio\23.0\source\data\firedac.

Si la bibliothèque client SQLite n'a pas été installée correctement, une exception est déclenchée quand vous essayez de vous connecter :

[FireDAC][Phys][SQLite]-314. Cannot load vendor library [SQLITE3.DLL]. The specified module could not be found. Check [SQLITE3.DLL], which is located in one of the PATH directories or in the application EXE directory.

Logiciel client Linux

Sous Linux, FireDAC prend uniquement en charge la liaison dynamique et requiert la bibliothèque client SQLite 3. Pour l'installer, procédez comme suit :

  1. Sur Ubuntu Server 16.04 LTS, exécutez :
    sudo apt-get install libsqlite3-0
    sudo ln -s /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 /usr/lib/x86_64-linux-gnu/libsqlite3.so
    
  2. Sur Red Hat Enterprise Linux 7, exécutez :
    sudo yum install sqlite
    sudo ln -s /usr/lib64/libsqlite3.so.0 /usr/lib64/libsqlite3.so
    

Liaison du pilote

Pour lier le pilote :

Paramètres de définition de la connexion

Pour se connecter à une base de données SQLite, la plupart des applications vous demandent de spécifier DriverID et Database. Pour plus de détails, voir Définition d'une connexion (FireDAC).

DriverID=SQLite

Paramètre Description Valeur exemple
Database

Chemin vers une base de données Utilisez ':memory:' ou une chaîne vide pour créer et vous connecter à une base de données en mémoire vide. Un chemin d'accès peut inclure des variables relatives au chemin.

  • c:\MyApp\db.sdb
  • $(temp)\db.sdb
OpenMode

Mode d'ouverture d'une base de données :

  • CreateUTF8 -- ouvre une base de données dans laquelle lire ou écrire. Si la base de données n'existe pas, elle sera créée avec l'encodage par défaut UTF8 (valeur par défaut pour les versions avant Delphi 2009).
  • CreateUTF16 -- ouvre une base de données dans laquelle lire ou écrire. Si la base de données n'existe pas, elle sera créée avec l'encodage par défaut UTF16 (valeur par défaut pour Delphi 2009 et version ultérieure).
  • ReadWrite -- ouvre une base de données dans laquelle lire ou écrire. Si la base de données n'existe pas, une exception est déclenchée.
  • ReadOnly -- ouvre une base de données en lecture seule. Si la base de données n'existe pas, une exception est déclenchée.
ReadOnly
Encrypt Spécifie un mode de cryptage par défaut pour une base de données. Le mode peut être redéfini avec un préfixe de mot de passe facultatif. S'il n'est pas spécifié, le mode spécifié par ce paramètre est utilisé. Sinon, la valeur aes-256 est utilisée.
Password Spécifie un mot de passe pour une base de données cryptée. La valeur peut avoir la forme suivante :

[ aes-128 | aes-192 | aes-256 | aes-ctr-128 | aes-ctr-192 | aes-ctr-256 | aes-ecb-128 | aes-ecb-192 | aes-ecb-256 :] <mot de passe> Le préfixe facultatif contrôle l'algorithme de chiffrement à utiliser. La valeur par défaut est une chaîne vide, qui représente le mode non crypté.

  • aes-256:12345
  • qwe12345qwe
NewPassword

Spécifie un nouveau mot de passe pour une base de données et réalise une opération de cryptage :

  • Pour crypter une base de données non cryptée, spécifiez une chaîne non vide pour NewPassword et une chaîne vide pour Password ;
  • Pour décrypter une base de données cryptée, spécifiez une chaîne vide pour NewPassword et une chaîne non vide pour Password ;
  • Pour changer le mot de passe d'une base de données cryptée, spécifiez une chaîne non vide pour NewPassword et une chaîne non vide pour Password.
BusyTimeout Définit le temps, en millisecondes (ms), pendant lequel une table est verrouillée et UpdateOptions.LockWait est défini sur True. La valeur 0 indique qu'il n'y a pas d'attente. La valeur par défaut est 10000. 5000
CacheSize Change le nombre maximal de pages de disques de base de données que SQLite conserve simultanément en mémoire. Chaque page utilise environ 1,5 Ko de mémoire. La valeur par défaut est 10000. 10000
SharedCache Active ou désactive la fonctionnalité de cache partagé SQLite. Pour plus de détails, lisez cet article (EN). La valeur par défaut est True. False
LockingMode

Définit le mode de verrouillage de la connexion à la base de données. Ce paramètre peut avoir l'une des valeurs suivantes :

  • Normal -- ce mode accorde un accès multi-utilisateurs aux fichiers de la base de données.
  • Exclusive -- ce mode offre des performances optimales.

La valeur par défaut est Exclusive, car elle permet d'obtenir une vitesse d'écriture/lecture maximale pour les applications mono-utilisateurs.

Exclusive
Synchronous

Définit le mode de synchronisation de la connexion à la base de données du cache en mémoire avec les fichiers de la base de données. Ce paramètre peut avoir l'une des valeurs suivantes :

  • Full -- effectue la synchronisation à chaque moment critique.
  • Normal -- comme ci-dessus, mais moins souvent.
  • Off -- offre des performances optimales. C'est la valeur par défaut.
Off
ForeignKeys

Permet l'utilisation de clés étrangères pour la connexion à la base de données, quand l'application utilise SQLite v 3.6.19 ou ultérieure. Ce paramètre peut avoir l'une des valeurs suivantes :

  • On -- les clés étrangères sont activées dans une session. C'est la valeur par défaut.
  • Off -- les clés étrangères sont désactivées dans une session.
Off
StringFormat

Définit comment représenter les valeurs chaîne (String) :

  • Choose -- représentée au format ftString / ftWideString / ftMemo / ftWideMemo, en fonction du nom du type de données déclaré (par défaut) ;
  • Unicode -- toujours représentée au format ftWideString / ftWideMemo ;
  • ANSI -- toujours représentée au format ftString / ftMemo.
Unicode
GUIDFormat

Définit comment stocker les valeurs GUID :

  • String -- stocke les valeurs GUID sous forme de chaîne de caractères (par défaut).
  • Binary -- stocke les valeurs GUID sous forme de chaîne binaire.
Binaire
DateTimeFormat

Définit comment stocker les valeurs de date et heure :

  • String -- stocke la date et l'heure sous forme de chaîne de caractères, au format AAAA-MM-JJ et HH:MM:SS.XXX (par défaut).
  • Binary -- stocke la date et l'heure sous forme de nombre réel, c'est-à-dire une date julienne.
  • DateTime -- stocke la date et l'heure sous forme de nombre réel, c'est-à-dire une valeur TDateTime.
Binaire
Extensions

Active, désactive ou spécifie les extensions du moteur SQLite à charger :

  • True -- active les extensions.
  • False -- désactive les extensions (par défaut).
  • Sinon, utilisez une liste d'extensions à charger sous la forme <bibliothèque>[=<point d'entrée>][;...].
MyExt.dll;FullTS.dll
SQLiteAdvanced Autres options de connexion à la base de données SQLite. Pour plus de détails, voir les instructions Pragma (EN) prises en charge par SQLite. auto_vacuum = 1;page_size = 4096;temp_store = FILE
MetaDefCatalog Nom de la base de données par défaut. En mode conception, le code exclut le nom du catalogue du nom d'objet s'il est égal à MetaDefCatalog. Le fait de définir MetaDefCatalog ne change pas la base de données en cours dans la session SQLite. La valeur par défaut est 'MAIN'. MyDB

Exemples d'utilisation

  • Connexion à une base de données locale en mode exclusif :


DriverID=SQLite
Database=$(FDHOME)\DB\Data\FDDemo.sdb
  • Connexion à une base de données partagée (il n'est pas recommandé de stocker des bases de données SQLite dans des dossiers partagés pour l'accès multi-utilisateurs en lecture/écriture) :


DriverID=SQLite
Database=\\srv\mydb.sqlite
LockingMode=Normal
Synchronous=Normal
  • Cryptage d'une base de données non cryptée :


DriverID=SQLite
Database=$(FDHOME)\DB\Data\FDDemo.sdb
NewPassword=aes-256:123qwe
  • Ouverture d'une base de données cryptée :


DriverID=SQLite
Database=c:\temp\test.db
Password=123qwe
  • Connexion à une base de données en mémoire :


DriverID=SQLite
Database=:memory:
  • Connexion à un fichier de base de données dans le dossier Documents sur le périphérique iOS ou le simulateur iOS en mode exclusif :


DriverID=SQLite
Database=$(DOC)/test.sdb

Voir aussi

Exemples