ClipaTec Informática

Receba novidades por e-mail. Digite seu e-mail abaixo e clique no botão "Cadastrar"

Delivered by FeedBurner

6 de outubro de 2016

Backup da base de dados com Delphi e FireDac

backup delphi firedac

Olá terrestres. Neste artigo, vamos montar um esquema de backup de uma base de dados FireBird.
Backup sempre foi uma preocupação tanto da parte do desenvolvedor, quanto da parte do usuário.
Claro que nem sempre o usuário se preocupa em fazer backup, mas sempre o sistema é o culpado, se um dia, o banco corromper, não é verdade?
Então, vamos aprender como implementar um recurso de backup, simples, usando o FireDac.
Existem diversas maneiras. Alguns preferem usar o aplicativo WinRar, para este função, no qual, simplesmente, gera um arquivo compactado com o banco de dados. Outros somente fazem uma cópia da base de dados para um determinado local. E outros, geram o arquivo de backup que os próprios SGBDs oferecem. No caso do FireBird, o famoso "FBK".
Neste exemplo, trabalharemos com a geração do arquivo "FBK" que o próprio FireBird oferece, usando alguns componentes da paleta FireDac.
Com base neste exemplo, você poderá incrementar mais recursos, como por exemplo, opção de compactar, agendamentos, etc.
Crie um novo projeto em Delphi e adicione os componentes: FDIBBackup, FDPhysFBDriverLink, FDGUIxWaitCursor, Memo (name = mmoProgresso) e dois Button (name btnIniciar, btnFechar).
Selecione o componente FDIBBackup e ligue na propriedade "DriverLink" o componente FDPhysFBDriverLink.
Tente montar um layout parecido com este:
backup delphi firedac

Obs: o componente ImageList (imgs16x16) está sendo utilizado apenas como repositório das imagens que estão sendo usadas nos botões.
Agora, vamos para as implementações. Declare os seguintes métodos na seção "Private" do formulário:
backup delphi firedac

Vamos implementar primeiro o método "HabilitarBotoes", segue a implementação:
backup delphi firedac

A única coisa que fazemos neste método, é atribuir para a propriedade "Enabled" dos botões o parâmetro da função, que por padrão é "True" conforme especificamos na declaração do método.
Este método será útil quando for iniciado o processo do backup, desabilitaremos os botões, e só habilitaremos novamente, no final do processo, ou caso, der erro e o processo não for concluído.
Agora, vamos implementar o método "GerarBackup". Segue implementação:
backup delphi firedac

Neste método, toda implementação ficará dentro de um bloco de tratamento (try...except), caso ocorrer algum erro durante o processo, simplesmente emitiremos uma mensagem para o usuário.
No início do método, desabilitamos os botões, conforme dito anteriormente.
Alimentamos as propriedades do componente FDIBBackup, que dispensa comentários, visto que, na imagem acima, já está explicando o que significa cada propriedade.
Após chamar o método "Backup" do componente, o processo verdadeiramente se inicia. Se ocorrer tudo bem, uma mensagem é exibida para o usuário, informando que deu tudo certo, e em seguida, volta habilitar os botões. Como por padrão definimos no método "HabilitarBotoes" que seu valor é "True", por este motivo, não passamos nenhum valor para o parâmetro neste ponto do método.
Se por acaso, ocorrer algum erro, o método entrará no bloco de exceção, onde habilitamos os botões e mandamos uma mensagem de erro para o usuário, inclusive, com a mensagem capturada pela classe de exceção do bloco "Try...except".
Simples, prático e objetivo. Desta forma, temos o nosso backup, pronto, implementado. Porém, seria interessante, acompanharmos o processo não?
É exatamente por isso que colocamos um "memo" no projeto. Ele mostrará cada processo realizado.
Para isso, selecione o "memo" e na propriedade "ScrollBars", selecione a opção "ssVertical".
Legal, agora, vá até o evento "OnProgress" do componente "FDIBBackup" e implemente-o da seguinte forma:
backup delphi firedac

A única coisa que fazemos é adicionar no "memo", as linhas de mensagens retornadas pelo serviço de backup do banco. Desta forma, conseguiremos visualizar o processo que está sendo realizado.
Ufa, chegamos ao fim deste artigo, ficou um tanto massante, porém, não tem como ficar com dúvida né? Mas se tiver dúvida, deixe seu comentário que ajudaremos com todo prazer.
Muito bem, agora basta chamar o método no botão. Para isso, de um duplo clique sobre o botão "Iniciar" e chame o método "GerarBackup", e no botão "Fechar", chame o comando "Close", conforme mostra a imagem:
backup delphi firedac

Muito bem gente, algumas dicas que você pode incrementar, é que antes de começão o processo, você pode adicionar uma linha ao "memo" informando que o processo de backup está iniciando, e no final, outra linha informando que o backup foi concluído com sucesso, ou com o erro. Isso poderia substituir as mensagens que exibimos. Também é interessante trabalhar em cima do nome do arquivo de backup, colocando data e hora por exemplo. Fica a critério. Vocês são livres para personalizar da maneira que lhe convém. Abraços e até o próximo.

Download

- Download do código fonte do projeto;

(Por ClipaTec Informática)

7 comentários:

  1. É possível construir as modificações para o bd MySQL?

    ResponderExcluir
    Respostas
    1. Sim. Só que você teria que trocar o componente "FDPhysFBDriverLink" pelo "FDPhysMySQLDriverLink". Abraço.

      Excluir
  2. Como poderia substituir o memo por um TGauge?

    ResponderExcluir
    Respostas
    1. Cremos que sim rsrsrs, só que não temos uma solução para isso ainda. Mas vamos procurar, e postaremos se encontrarmos. Abraço.

      Excluir
  3. Ola, tudo bem? Para usar o MySQL, tentei fazer o q vcs sugeriram: "Sim. Só que você teria que trocar o componente "FDPhysFBDriverLink" pelo "FDPhysMySQLDriverLink". Abraço." porém não deu certo... APontei o DriverLink para este do MySQL mas diz que é Incompatível. Busquei no google e não achei nada a respeito. Obrigado.

    ResponderExcluir
    Respostas
    1. Certo. Você tem o MySQL instalado? Vamos fazer um teste aqui também e postaremos o resultado. Abraço.

      Excluir
  4. Ola. Quer dizer se tenho instalado no PC? Sim, mas seria o acesso a uma base MySQL online... O estranho é que o DriverLink não permite o apontamento para o componente FDPhysMySQLDriverLink. O pior é que na Web não encontro nada sobre isso...

    ResponderExcluir

Visite nossa página de Política de comentarios antes de comentar para ter certeza de que seu comentário não será excluído! Lembre-se, assim que aprovarmos o teu comentário ele será publicado, por isso, não deixe de sempre visitar nosso blog e conferir nossa resposta ao seu comentário, abraço!