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.