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 - x86 sqlite3_x86.obj
- Win64 - x64 sqlite3_x64.obj
- macOS – x86 libcgsqlite3.dylib (Bereitstellung erforderlich)
- iOSDevice32 - libsqlite.a
- iOSDevice64 - libsqlite.a
- Android - libsqlite.a
FireDAC enthält die Binärdateien von SQLite v 3.9.2.
- 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
- macOS – libsqlite3.dylib
- iOSDevice32 - libsqlite3.dylib
- iOSDevice64 - libsqlite3.dylib
- Android - libsqlite.so
Die Verwendung der Version 3.7.7.1 oder später wird empfohlen. Das ist der Standardmodus für iOS-Simulator.
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.
Sie müssen die FireDAC.inc-Datei ändern, um den Link-Modus auszuwählen:
- Definieren Sie FireDAC_SQLITE_STATIC für das statische Linken.
- Heben Sie die Definition von FireDAC_SQLITE_STATIC für das dynamische Linken auf.
C:\Program Files (x86)\Embarcadero\Studio\21.0\source\data\firedac
.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 oder -Simulator 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)