This example shows how to synchronize a MSSQL database tables via ADO.
procedure TForm1.btnCompareClick(Sender: TObject);
begin
memLog.Clear();
memResult.Clear();
MSSQLExec1.MSSQLServerOptions.Assign(TableDataComparer1.MSSQLServerOptions);
MSSQLExec1.MSSQLServerOptions.Assign(TableDataComparer1.MSSQLServerOptions);
TableDataComparer1.TableNameMaster := edtTableNameM.Text;
TableDataComparer1.TableNameTarget := edtTableNameT.Text;
ConnectionMaster.Connected := True;
ConnectionTarget.Connected := True;
try
if TableDataComparer1.CompareData() then
begin
memResult.Lines.BeginUpdate;
MSSQLExec1.GetScript(memResult.Lines);
memResult.Lines.EndUpdate;
end;
memLog.Lines.Add('<Comparing finished.>');
finally
ConnectionTarget.Connected := False;
ConnectionMaster.Connected := False;
end;
end;
procedure TForm1.btnUpdateClick(Sender: TObject);
begin
TableDataComparer1.SQLExec.ExecuteScript();
end;
procedure TForm1.ConnectionMasterBeforeConnect(Sender: TObject);
begin
ADOConnectionMaster.ConnectionString :=
AdoConnectString(cbAuthM.Checked, edtMasterServer.Text, edtMasterDatabaseName.Text,
edtMasterUser.Text, edtMasterPassword.Text);
MSSQLExec1.MSSQLServerOptions.SQLServerVersion :=
TMSSQLServerVersionType(cbSqlServerVersion.Items.Objects[cbSqlServerVersion.ItemIndex]);
end;
procedure TForm1.ConnectionTargetBeforeConnect(Sender: TObject);
begin
ADOConnectionTarget.ConnectionString :=
AdoConnectString(cbAuthT.Checked, edtTargetServer.Text, edtTargetDatabaseName.Text,
edtTargetUser.Text, edtTargetPassword.Text);
MSSQLExec1.MSSQLServerOptions.SQLServerVersion :=
TMSSQLServerVersionType(cbSqlServerVersion.Items.Objects[cbSqlServerVersion.ItemIndex]);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cbSqlServerVersion.Items.Clear();
cbSqlServerVersion.Items.AddObject('MSSQL 2000', TObject(st_MSSQL2000));
cbSqlServerVersion.Items.AddObject('MSSQL 2005', TObject(st_MSSQL2005));
cbSqlServerVersion.Items.AddObject('MSSQL 2008', TObject(st_MSSQL2008));
cbSqlServerVersion.Items.AddObject('MSSQL 2012', TObject(st_MSSQL2012));
cbSqlServerVersion.Items.AddObject('MSSQL 2014', TObject(st_MSSQL2014));
cbSqlServerVersion.Items.AddObject('MSSQL 2016', TObject(st_MSSQL2016));
cbSqlServerVersion.Items.AddObject('MSSQL 2017', TObject(st_MSSQL2017));
cbSqlServerVersion.ItemIndex := cbSqlServerVersion.Items.Count - 2;
end;
function AdoConnectString(WinAuth: Boolean;
HostName, DbName, UserName, Password: String): String;
begin
Result := 'Provider=SQLOLEDB;' +
'Initial Catalog='+DbName+';';
if HostName <> '' then Result := Result +
'Data Source='+HostName+';';
if WinAuth then
begin
Result := Result + 'Integrated Security=SSPI;' +
'Persist Security Info=False;';
end else
begin
Result := Result + 'Persist Security Info=True;';
if UserName <> '' then
Result := Result + 'User ID=' + UserName + ';';
if Password <> '' then
Result := Result + 'Password=' + Password + ';';
end;
end;
Article ID: 152, Created: March 6, 2020 at 6:31 PM, Modified: March 6, 2020 at 6:31 PM