AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?

Ein Thema von paule32.jk · begonnen am 3. Sep 2023 · letzter Beitrag vom 18. Okt 2023
 
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.056 Beiträge
 
Delphi 12 Athens
 
#23

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?

  Alt 21. Sep 2023, 15:42
Das baut bei mir eine SQLITE Datenbankverbindung.
Kann sein dass die Datei erst beim Anlegen von Tabellen oder Beim Connect entsteht, aber sie ist immer da wenn ich sie brauche.
Es ist aus zwei Methoden zusammen kopierter Code und alle Variablen liegen bei mir im private Teil einer Klasse,
aber das soll ja auch einfach nur copy paste freundlich sein, deswegen liegen die variablen jetzt in irgendwo über dem Begin.
Evtl. must du 'FMX' durch 'VCL' ersetzten je nach Framework.
Delphi-Quellcode:
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;
Damit kann man eine datenbank Verkleinern und beschleunigen... das ist ziemlich schnell und man kann es eigentlich bei jedem Start machen.
Delphi-Quellcode:
procedure TDbHealth.Defrag_And_SpeedUp;
var fFDSQLiteValidate_sweep, fFDSQLiteValidate_Analyze:TFDSQLiteValidate;
begin
    fFDSQLiteValidate_sweep := TFDSQLiteValidate.Create(nil);
    try
      fFDSQLiteValidate_sweep.Database := FDatabase;
      fFDSQLiteValidate_sweep.Password := FPassword;
      fFDSQLiteValidate_sweep.DriverLink := FPhysSQLiteDriverLink;
      fFDSQLiteValidate_sweep.MaxErrors := 10;
      fFDSQLiteValidate_sweep.Sweep;
    finally
      fFDSQLiteValidate_sweep.free;
    end;
    fFDSQLiteValidate_Analyze := TFDSQLiteValidate.Create(nil);
    try
      fFDSQLiteValidate_Analyze.Database := FDatabase;
      fFDSQLiteValidate_Analyze.Password := FPassword;
      fFDSQLiteValidate_Analyze.DriverLink := FPhysSQLiteDriverLink;
      fFDSQLiteValidate_Analyze.MaxErrors := 10;
      fFDSQLiteValidate_Analyze.Analyze;
    finally
      fFDSQLiteValidate_Analyze.free;
    end;
end;
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty (21. Sep 2023 um 16:07 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz