Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Datenbank überprüfen und ggf. modifizieren
21. Jun 2016, 08: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 09:07 Uhr)
|