Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Datenbank überprüfen und ggf. modifizieren

  Alt 21. Jun 2016, 07:46
@jobo

Ich erledige so etwas mit UpdateScripts. Dabei kann man nicht nur die Struktur verändern, sondern auch die Daten in den alten Tabellen in diese neue Struktur überführen (wenn es mal eine etwas größere Änderung gibt).
Delphi-Quellcode:
type
  IUpdateDatabase = interface
    [ '{3168C196-3301-4327-8135-C21378B17843}' ]
    function GetVersion( ): Integer;
    procedure ExecuteUpdateScript( const aScript: string );
  end;

  IUpdateStore = interface
    [ '{16A0E5BF-DC27-4D4C-A3D3-968F406C44B6}' ]
    function HasScriptFor( aVersion: Integer ): Boolean;
    function GetScriptFor( aVersion: Integer ): string;
  end;

  TDatabaseUpdater = class
  private
    FScriptStore: IUpdateStore;
  public
    constructor Create( const aScriptStore: IUpdateStore );

    function Update( const aDatabase: IUpdateDatabase ): Integer;
  end;

{ TDatabaseUpdater }

constructor TDatabaseUpdater.Create( const aScriptStore: IUpdateStore );
begin
  inherited Create;
  FScriptStore := aScriptStore;
end;

function TDatabaseUpdater.Update( const aDatabase: IUpdateDatabase ): Integer;
var
  lCurrentVersion: Integer;
  lScript : string;
begin
  lCurrentVersion := aDatabase.GetVersion( );
  while FScriptStore.HasScriptFor( lCurrentVersion ) do
    begin
      lScript := FScriptStore.GetScriptFor( lCurrentVersion );
      aDatabase.ExecuteUpdateScript( lScript );
      lCurrentVersion := aDatabase.GetVersion( );
    end;
  Result := lCurrentVersion;
end;

end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (21. Jun 2016 um 08:07 Uhr)
  Mit Zitat antworten Zitat