This example shows how to synchronize a FireBird database structure via the FireDAC library.
procedure TForm2.btnCompareClick(Sender: TObject);
begin
memResult.Lines.Clear;
DBComparer1.CompareDatabases();
memResult.Lines.BeginUpdate();
DBComparer1.SQLExec.GetScript(memResult.Lines);
memLog.Lines.Add('<Compare Finished>');
memResult.Lines.EndUpdate();
end;
procedure TForm2.btnExtractClick(Sender: TObject);
begin
memLog.Clear();
memResult.Clear();
DBCConnection1.Connected := True;
DBCConnection2.Connected := True;
try
DBStructure1.Clear();
DBStructure2.Clear();
memLog.Lines.Add('Open ' + edtMasterDbName.Text + ' DataBase');
IBDBExtract1.ExtractDatabase();
memLog.Lines.Add('Open ' + edtTargetDbName.Text + ' DataBase');
IBDBExtract2.ExtractDatabase();
DBStructure1.Metadata.ExtractMetadata(memResult.Lines);
DBStructure2.Metadata.ExtractMetadata(memResult.Lines);
memLog.Lines.Add('<Extract Finished>');
finally
DBCConnection1.Connected := False;
DBCConnection2.Connected := False;
end;
end;
procedure TForm2.btnUpdateClick(Sender: TObject);
begin
IBSQLExec.ExecuteScript();
end;
procedure TForm2.DBCConnection1BeforeConnect(Sender: TObject);
begin
FDPhysFBDriverLink1.VendorLib := edtClientLibrary.Text;
FDConnection1.Params.Clear();
FDConnection1.DriverName := 'FB';
FDConnection1.Params.Add('Database=' + edtMasterDbName.Text);
FDConnection1.Params.Add('User_Name=' + edtMasterUser.Text);
FDConnection1.Params.Add('Password=' + edtMasterPassword.Text);
DBStructure1.IBServerOptions.SQLServerVersion :=
TIBSQLServerVersionType(cbSqlServerVersion.Items.Objects[cbSqlServerVersion.ItemIndex]);
end;
procedure TForm2.DBCConnection2BeforeConnect(Sender: TObject);
begin
FDPhysFBDriverLink1.VendorLib := edtClientLibrary.Text;
FDConnection2.Params.Clear();
FDConnection2.DriverName := 'FB';
FDConnection2.Params.Add('Database=' + edtTargetDbName.Text);
FDConnection2.Params.Add('User_Name=' + edtTargetUser.Text);
FDConnection2.Params.Add('Password=' + edtTargetPassword.Text);
DBStructure2.IBServerOptions.SQLServerVersion :=
TIBSQLServerVersionType(cbSqlServerVersion.Items.Objects[cbSqlServerVersion.ItemIndex]);
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
cbSqlServerVersion.Items.Clear();
cbSqlServerVersion.Items.AddObject('Firebird 1.5', TObject(st_FireBird_15));
cbSqlServerVersion.Items.AddObject('Firebird 2.0', TObject(st_FireBird_20));
cbSqlServerVersion.Items.AddObject('Firebird 2.1', TObject(st_FireBird_21));
cbSqlServerVersion.Items.AddObject('Firebird 2.5', TObject(st_FireBird_25));
cbSqlServerVersion.Items.AddObject('Firebird 3.0', TObject(st_FireBird_30));
cbSqlServerVersion.ItemIndex := cbSqlServerVersion.Items.Count - 1;
end;
procedure TForm2.btnUpdateClick(Sender: TObject);
begin
IBSQLExec.ExecuteScript();
end;
Article ID: 148, Created: February 12, 2020 at 7:42 PM, Modified: February 12, 2020 at 7:42 PM