Herstellen einer Verbindung zu SQLite-Datenbanken (FireDAC)
Nach oben zu Datenbankkonnektivität (FireDAC)
In diesem Thema wird beschrieben, wie eine Verbindung zu SQLite-Datenbankdateien hergestellt wird.
Inhaltsverzeichnis
Unterstützte Versionen
Der native FireDAC-Treiber unterstützt SQLite-Datenbanken aus der Version 3.0 und höher. Eine detaillierte Erläuterung der Verwendung von SQLite in FireDAC für Delphi-Anwendungen finden Sie unter Verwenden von SQLite mit FireDAC.
Client-Software
FireDAC unterstützt zwei Modi zum Einbinden von SQLite-Bibliotheken:
- Statisches Linken – die folgenden Client-Bibliotheken werden statisch in die Anwendung gelinkt:
- Win32 - sqlite3_x86.obj
- Win64 - sqlite3_x64.obj
- macOS64 - libcgsqlite3.dylib (Bereitstellung erforderlich)
- iOSDevice64 - libsqlite.a
- Android32 - libsqlite.a
- Android64 - libsqlite.a
FireDAC enthält die Binärdateien von SQLite v 3.31.1.
- Dynamisches Linken – die folgenden Client-Bibliotheken müssen verfügbar sein, damit eine SQLite-Datenbank geöffnet werden kann.
- Win32 - x86 SQLITE3.DLL
- Win64 - x64 SQLITE3.DLL
- macOS64 - libsqlite3.dylib
- iOSDevice64 - libsqlite3.dylib
- Android32 - libsqlite.so
- Android64 - libsqlite.so
SQLITE_ENABLE_COLUMN_METADATA
ist nicht definiert). Infolgedessen kann FireDAC möglicherweise nicht erkennen, ob der Modus für die automatische Inkrementierung der Spalte verfügbar ist oder ob er aktiviert oder deaktiviert ist.Sie können Folgendes herunterladen:
- Die neueste x86-DLL-Version von hier (EN) (Kapitel "Precompiled Binaries For Windows", Absatz "This is a DLL") und sie in einen in der PATH-Umgebungsvariable angegebenen Ordner (z. B. System32) oder in Ihren Anwendungs-EXE-Ordner kopieren.
- Die x64-DLL-Version von hier (EN) als "sqlite-netFx40-binary-x64-xxxxx.zip". Extrahieren Sie sie in einen Ordner, benennen Sie SQLite.Interop.DLL in SQLITE3.DLL um, und platzieren Sie sie in einen Ordner wie oben beschrieben.
Für SQLite fügt FireDAC die Möglichkeit hinzu, zwischen statischer und dynamischer Einbindung der SQLite-Engine auszuwählen. Für die Verwendung der statischen Einbindung der SQLite-Engine muss die Unit FireDAC.Phys.SQLiteWrapper.Stat der uses-Klausel einer der Units in Ihrem Projekt hinzugefügt werden. Ansonsten wird die dynamische Einbindung gewählt.
Die Eigenschaft TFDPhysSQLiteDriverLink.EngineLinkage steuert den Bindungsmodus. Wenn der Wert slDefault oder slStatic lautet, dann wird die Unit FireDAC.Phys.SQLiteWrapper.Stat zur Entwurfszeit der Unit, die die Komponente enthält, hinzugefügt. Wenn die Anwendung die Verbindung zur Laufzeit definiert, dann muss die Unit FireDAC.Phys.SQLiteWrapper.Stat manuell hinzugefügt werden.
Wenn die SQLite-Client-Bibliothek nicht ordnungsgemäß installiert wurde, wird beim Verbindungsversuch eine Exception ausgelöst:
Linux-Client-Software
FireDAC unterstützt auf Linux nur das dynamische Linken und benötigt die SQLite-Client-Bibliothek. So installieren Sie sie:
-
Auf Ubuntu Server 16.04 LTS, führen Sie aus:
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
-
Auf Red Hat Enterprise Linux 7, führen Sie aus:
sudo yum install sqlite sudo ln -s /usr/lib64/libsqlite3.so.0 /usr/lib64/libsqlite3.so
Treibereinbindung
So binden Sie den Treiber ein:
- Ziehen Sie aus der Paletten-Seite "FireDAC Links" eine TFDPhysSQLiteDriverLink-Komponente auf das Formular.
- Oder nehmen Sie die Unit FireDAC.Phys.SQLite in eine uses-Klausel auf.
Verbindungsdefinitionsparameter
Für eine Verbindung mit einer SQLite-Datenbank ist für die meisten Anwendungen die Angabe von DriverID und Database erforderlich (Einzelheiten finden Sie unter Definieren von Verbindungen (FireDAC)).
DriverID=SQLite
Parameter | Beschreibung | Beispielwert |
---|---|---|
Database |
Ein Pfad zu einer Datenbank. Verwenden Sie ":memory:" oder einen leeren String, um eine leere Datenbank im Arbeitsspeicher zu erstellen und eine Verbindung damit herzustellen. Ein Pfad kann Pfadvariablen enthalten. |
|
OpenMode |
Ein Modus zum Öffnen einer Datenbank:
|
ReadOnly |
Encrypt | Gibt einen Standardverschlüsselungsmodus für eine Datenbank an. Der Modus kann mit einem optionalen Passwortpräfix überschrieben werden. Wenn kein Passwortpräfix festgelegt ist, dann wird der in diesem Parameter angegebene Modus verwendet. Ansonsten wird "aes-256" verwendet. | |
Password | Legt ein Passwort für eine verschlüsselte Datenbank fest. Der Wert kann die folgende Form haben:
[ aes-128 | aes-192 | aes-256 | aes-ctr-128 | aes-ctr-192 | aes-ctr-256 | aes-ecb-128 | aes-ecb-192 | aes-ecb-256 :] <Passwort> Das optionale Präfix steuert den zu verwendenden Verschlüsselungsalgorithmus. Der Vorgabewert ist ein leerer String, was "unverschlüsselter Modus" bedeutet. |
|
NewPassword |
Legt ein neues Passwort für eine Datenbank fest und führt eine Verschlüsselungsoperation durch:
|
|
BusyTimeout | Legt eine Wartezeit von "ms" Millisekunden fest, wenn eine Tabelle gesperrt ist und UpdateOptions.LockWait auf True gesetzt ist. Null bedeutet keine Wartezeit. Der Vorgabewert ist 10000. | 5000 |
CacheSize | Ändert die maximale Anzahl von Datenbank-Festplattenseiten, die SQLite gleichzeitig im Arbeitsspeicher hält. Jede Seite benötigt etwa 1,5 K Speicherplatz. Der Vorgabewert ist 10000. | 10000 |
SharedCache | Aktiviert oder deaktiviert das SQLite-Feature "Freigegebener Zwischenspeicher". Weitere Details finden Sie hier (EN). Der Vorgabewert ist True. | False |
LockingMode |
Legt den Sperrmodus für die Datenbankverbindung fest. Folgende Werte sind möglich:
Der Vorgabewert ist "Exclusive", weil damit eine maximale Lese-/Schreibgeschwindigkeit für einzelne Benutzeranwendungen erzielt wird. |
Exclusive |
Synchronous |
Legt den Datenbankverbindungs-Synchronisierungsmodus des Arbeitsspeicherzwischenspeichers mit Datenbankdateien fest. Folgende Werte sind möglich:
|
Off |
ForeignKeys |
Aktiviert die Verwendung von Fremdschlüsseln für die Datenbankverbindung, wenn die Anwendung SQLite Version 3.6.19 oder höher verwendet. Folgende Werte sind möglich:
|
Off |
StringFormat |
Definiert, wie String-Werte dargestellt werden sollen:
|
Unicode |
GUIDFormat |
Definiert, wie GUID-Werte gespeichert werden sollen:
|
Binary |
DateTimeFormat |
Definiert, wie Datums- und Zeitwerte gespeichert werden sollen:
|
Binary |
Extensions |
Aktiviert oder deaktiviert die zu ladenden SQLite-Engine-Erweiterungen oder legt diese fest:
|
MyExt.dll;FullTS.dll |
SQLiteAdvanced | Zusätzliche SQLite-Datenbankverbindungsoptionen. Einzelheiten finden Sie bei den von SQLite unterstützten Pragma-Anweisungen (EN). | auto_vacuum = 1;page_size = 4096;temp_store = FILE |
MetaDefCatalog | Standarddatenbankname. Im Entwurfszeitcode wird der Katalogname im Objektnamen weggelassen, wenn er MetaDefCatalog entspricht. Durch Festlegen von MetaDefCatalog wird die aktuelle Datenbank in der SQLite-Sitzung nicht geändert. Der Vorgabewert ist "MAIN". | MyDB |
Anwendungsfälle
- Herstellen einer Verbindung zu einer lokalen Datenbank im exklusiven Modus:
DriverID=SQLite Database=$(FDHOME)\DB\Data\FDDemo.sdb
- Herstellen einer Verbindung zu einer freigegebenen Datenbank (es wird nicht empfohlen, SQLite-Datenbanken in freigegebenen Windows-Ordnern für den Lese-/Schreibzugriff von mehreren Benutzern zu speichern):
DriverID=SQLite Database=\\srv\mydb.sqlite LockingMode=Normal Synchronous=Normal
- Verschlüsseln einer unverschlüsselten Datenbank:
DriverID=SQLite Database=$(FDHOME)\DB\Data\FDDemo.sdb NewPassword=aes-256:123qwe
- Öffnen einer verschlüsselten Datenbank:
DriverID=SQLite Database=c:\temp\test.db Password=123qwe
- Herstellen einer Verbindung zu einer Datenbank im Arbeitsspeicher:
DriverID=SQLite Database=:memory:
- Herstellen einer Verbindung zu der Datenbankdatei im Ordner "Documents" auf dem iOS-Gerät im exklusiven Modus:
DriverID=SQLite Database=$(DOC)/test.sdb
Siehe auch
- Allgemeine Verbindungsparameter
- FAQs
- Konfigurieren von FireDAC-Treibern
- Verwalten von FireDAC-Verbindungsdefinitionen
- Mobile-Tutorial: Verwenden von FireDAC und SQLite (iOS und Android)
- Mobile-Tutorial: Verwenden von FireDAC in mobilen Anwendungen (iOS und Android)
Beispiele
- FireDAC SQLite (Beispiel)