var
fDBDir:
String;
FConnection: TFDConnection;
fGUIxAsyncExecuteDialog: TFDGUIxAsyncExecuteDialog;
fGUIxWaitCursor: TFDGUIxWaitCursor;
fPhysSQLiteDriverLink: TFDPhysSQLiteDriverLink;
Begin
FConnection := TFDConnection.Create(
nil);
FConnection.
Name := '
LOCALCONNECTION';
FConnection.Params.Clear;
FConnection.Params.Values['
DriverID'] := '
SQLite';
fDBDir := TPath.Combine(TPath.GetHomePath, '
MEINEDATENVERZEICHNIS');
if not TDirectory.Exists(fDBDir)
then
TDirectory.CreateDirectory(fDBDir);
FConnection.Params.Values['
Database'] := TPath.Combine(fDBDir,'
MEINEDATENBANKDATEI.s3db');
FConnection.Params.Values['
Lockingmode'] := '
Normal';
FConnection.Params.Values['
Synchronous'] := '
Full';
// 'Normal'
FConnection.Params.Values['
SharedCache'] := '
False';
FConnection.Params.Values['
DateTimeFormat'] := '
String';
FConnectionParams.Values['
Password'] := '
MEINUNKNACKBARESPASSWORT';
// Ohne Passwort fragt er nach einem Passwort! Auch wenn es leer ist.
FConnection.UpdateOptions.LockWait := false;
// false = sofort einen fehler melden wenn ein datensatz locked ist . true= warten bis lock vorbei ist.
FConnection.UpdateOptions.LockMode := TFDLockMode.lmPessimistic;
FConnection.TxOptions.Isolation := TFDTXisolation.xiRepeatableRead;
//vorher TFDTXisolation.xiIsolation Es geht um die Isolation von Transaktionen gegen einander
if Not Assigned(FPhysSQLiteDriverLink)
then
FPhysSQLiteDriverLink := TFDPhysSQLiteDriverLink.Create(self);
FPhysSQLiteDriverLink.DriverID := '
SQLite';
if Not Assigned(FGUIxWaitCursor)
then
FGUIxWaitCursor := TFDGUIxWaitCursor.Create(self);
FGUIxWaitCursor.Provider := '
FMX';
//oder 'VCL'
if Not Assigned(FGUIxAsyncExecuteDialog)
then
FGUIxAsyncExecuteDialog := TFDGUIxAsyncExecuteDialog.Create(Application.MainForm);
FGUIxAsyncExecuteDialog.Provider := '
FMX';
// oder 'VCL'
end;