Olá galera, nesta Quick Tips, irei mostra como podemos fazer duas coisas muito interessantes. A primeira é o backup automático com o Banco MySQL, e a segunda é montar um arquivo bat para isso.
Vamos criar uma unit, e salvar a mesma como uBackupMySQL, nela vamos implementar o código abaixo:
unit uBackupMySQL;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
Type
TBackupMySQL = class
private
FUsuario: String;
FSenha: String;
FNomeArquivo: String;
FNomeBancoDados: String;
FPastaBackup : String;
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
property Usuario : String read FUsuario write FUsuario;
property Senha : String read FSenha write FSenha;
property NomeArquivo : String read FNomeArquivo write FNomeArquivo;
property NomeBancoDados : String read FNomeBancoDados write FNomeBancoDados;
property PastaBackup : String read FPastaBackup write FPastaBackup;
procedure ExecutarBackup;
end;
implementation
{ TBackupMySQL}
procedure TBackupMySQL.ExecutarBackup;
Var
xArquivoBat : TStringList;
begin
Try
xArquivoBat := TStringList.Create;
xArquivoBat.Add('@echo off');
xArquivoBat.Add('@echo.');
xArquivoBat.Add('echo
#################################################');
xArquivoBat.Add('echo
#################################################');
xArquivoBat.Add('echo ### ###');
xArquivoBat.Add('echo ### ###');
xArquivoBat.Add('echo ### Backup automático ###');
xArquivoBat.Add('echo ### ###');
xArquivoBat.Add('echo ### ###');
xArquivoBat.Add('echo
#################################################');
xArquivoBat.Add('echo
#################################################');
xArquivoBat.Add('cd C:\Program Files\MySQL\MySQL Server 5.1\bin\');
xArquivoBat.Add('mysqldump.exe -u '+ FUsuario + ' -p'+FSenha +' --databases '+
FNomeBancoDados
xArquivoBat.Add('pause');
xArquivoBat.SaveToFile('BackupMySQL.bat');
WinExec('BackupMySQL.bat', SW_NORMAL);
Finally
FreeAndNil(xArquivoBat);
End;
end;
end.
Para testar o exemplo, podemos em qualquer outro formulário criar uma interface e passar os dados para as propriedades da classe. Veja um exemplo no clique de um TSpeedButton.
procedure TFrmBackupMySQL.SpeedButton1Click(Sender: TObject);
Var
BackupMySQL : TBackupMySQL;
begin
Try
BackupMySQL := TBackupMySQL.Create;
BackupMySQL.Usuario := EdtUsuario.Text;
BackupMySQL.Senha := EdtSenha.Text;
BackupMySQL.NomeArquivo := EdtNomeArquivo.Text;
BackupMySQL.PastaBackup := EdtPastaDestino.Text;
BackupMySQL.NomeBancoDados := EdtNomeBancoDados.Text;
BackupMySQL.ExecutarBackup;
Finally
FreeAndNil(BackupMySQL);
End;
end;
Ao testarmos o exemplo, o mesmo irá criar um arquivo .bat junto com o exe, e executar o mesmo. Note que usei comandos para montar este arquivo do MS-DOS, como o comando pause por exemplo, que pausa o arquivo até que seja pressionado alguma tecla.