Connexion à une base de données SQLite (FireDAC)
Remonter à Connectivité des bases de données (FireDAC)
Cette rubrique explique comment établir la connexion aux fichiers d'une base de données SQLite.
Sommaire
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.
- 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.
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.
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 :
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 :
-
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
-
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 :
- déposez un composant TFDPhysSQLiteDriverLink à partir de la page "Liens FireDAC" de la palette
- ou incluez l'unité FireDAC.Phys.SQLite dans une clause uses.
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. |
|
OpenMode |
Mode d'ouverture d'une base de données :
|
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é. |
|
NewPassword |
Spécifie un nouveau mot de passe pour une base de données et réalise une opération de cryptage :
|
|
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 :
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 :
|
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 :
|
Off |
StringFormat |
Définit comment représenter les valeurs chaîne (String) :
|
Unicode |
GUIDFormat |
Définit comment stocker les valeurs GUID :
|
Binaire |
DateTimeFormat |
Définit comment stocker les valeurs de date et heure :
|
Binaire |
Extensions |
Active, désactive ou spécifie les extensions du moteur SQLite à charger :
|
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
- Paramètres de connexion communs
- FAQ
- Comment configurer les pilotes FireDAC
- Comment gérer les définitions des connexions FireDAC
- Tutoriel mobile : Utilisation de FireDAC et SQLite (iOS et Android)
- Tutoriel mobile : Utilisation de FireDAC dans les applications mobiles (iOS et Android)
Exemples
- Exemple FireDAC SQLite