Post: [Firedac Dominando todas as técnicas] AutoRecovery

Alessandro Medeiros

Fala ai Radizeiro e Radizeria, tudo bem com você?

Cada semana um post novo, e estamos nessa nossa série sobre o Firedac, e uma ferramenta poderoso que depois que você conhece essa ferramenta não irá mais querer utilizar outro.

São diversas funcionalidades que podem lhe ajudar no seu dia a dia.

E aqui no blog não pode faltar conteúdos para vocês.

E no nosso exemplo de hoje irei utilizar o mesmo programinha que tenho trabalhado aqui no blog.

E nesse nosso exemplo irei alterar minha conexão para o SGDB Firebird.

Anteriormente estava utilizando o SQLite.

Esse recurso que irei mostrar no post de hoje é muito legal pois outras ferramentas não tinha essa funcionalidade.

E outras ferramentas apanhavam e o Firedac veio para resolver isso para nós.

Isso é legal para que você possa conhecer os recursos do Firedac.

Se você executar um comando SQL dentro do banco de dados, e cada SGDB possui uma particularidade.

Cada banco de dados possui uma particularidade para alguns comandos SQL.

Agora se você utiliza o Firedac ele cria uma camada de abstração para você, dando maior flexibilidade ao executar em outros SGDBs.

Onde o mesmo código que funciona em um SGDB irá funcionar no outro.

Vamos adicionar nesse nosso exemplo um novo DBgrid, com DataSource e um FDQuery.

E dentro do botão GetQuery só abrimos o nosso FDQuery.

Por padrão o nosso Firedac já vem com o AutoRecovery habilitado, isso é fantástico, algo que não existia nas outras ferramentas de conexão.

Quando a conexão caia tinha que fechar e abrir novamente sua aplicação para que pudesse conectar novamente.

E com essa funcionalidade o Firedac por default já trata isso para nós.

Ao executar o GetQuery, ele retorna os dados.

Agora se eu parar o servidor do Firebird e executar novamente o GetQuery você pode ver que não acontece nada.

Ou seja, eu não tenho mais o serviço do Firebird funcionando.

Mesmo com o serviço desabilitado ele não retorna nenhum erro, evitando assim aquelas mensagens indesejadas.

Agora ao retornar a conexão continua funcionando tudo perfeitamente, ficando transparente para o usuário.

Mas o legal é que você pode interceptar essa queda de conexão.

Quando o usuário estiver offline, e ao executar por exemplo uma alteração, é retornado um erro.

Então, enquanto eu não faço uma requisição no meu servidor de banco de dados.

E esse questão de interceptação da conexão é muito legal.

Dentro do FDConnection, temos algumas funções a serem feitas quando acontecer vários eventos, por exemplo, quando perder uma conexão, recuperar uma conexão.

Para isso eu tenho 3 eventos: OnLost, OnRecover e OnRestored.

Dentro desses evento é onde eu consigo interceptar essas conexões.

Vamos por exemplo utilizar o OnRecover, quando tentar recuperar uma conexão.

</pre>
procedure TForm2.FDConnection1Recover(ASender, AInitiator: TObject;
AException: Exception; var AAction: TFDPhysConnectionRecoverAction);
var
    iRes : Integer;
begin
    iRes :=
    MessageDlg('Conexão Perdida, Escolha o que deseja fazer: YES - OffLine, Reconectar - OK, Falha - 
        Cancel',mtConfirmation, [mbYes, mbOK, mbCancel], 0);

    case iRes of
        mrYes : AAction := faOfflineAbort;
        mrOk : AAction := faRetry;
        mrCancel : AAction := faFail;
    end;
end;

Se observar o nosso código acima, estou passando uma mensagem, onde dou a opção do usuário escolher o que ele quer fazer, se quer manter-se offline, reconectar ou cancelar essa opção.

Logo depois nós verificamos o que o usuário que fazer passando no case.

E o que define a ação dessa conexão é o AAction, onde ele irá passar se o usuário quer reconectar, abortar ou sair da operação.

Nós tratamos no OnRecover da conexão.

Agora ao executar com a conexão fechada veja o que aconteceu.

Observe que ao clicar no ok ele fica tentando conectar, ele não perde o que estava fazendo.

E com isso o usuário pode aguardar a conexão voltar e não perder o que está fazendo.

E observe que após a conexão voltar a alteração feita voltou perfeitamente.

Com isso você implementa uma camada de segurança para o seu usuário.

Imagina se o seu usuário estivesse lançando uma nota, e essa nota tem 100 itens, e a conexão cai, com essa opção ele pode aguardar a conexão voltar e terminar o lançamento da nota.

Muito legal não é pessoal?

O Firedac tem muitas funcionalidade que podemos aplicar no nosso dia a dia, e melhorar e muito a usabilidade do nosso software.

E caso você tenha interesse de conhecer mais sobre as técnicas  do Firedac acessa o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI, onde você não só terá conteúdos relacionados ao Firedac, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.

CLIQUE AQUI E SAIBA MAIS SOBRE O CLUBE DOS PROGRAMADORES DELPHI


Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre [Firedac Dominando todas as técnicas] AutoRecovery, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao [Firedac Dominando todas as técnicas] AutoRecovery, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2024 – Todos os direitos reservados