fbpx

Delphi Android acesso direto a banco de dados hospedado com UniDAC


Sempre me perguntei como minhas aplicações Android desenvolvidas com Delphi XE7 poderiam acessar diretamente um banco de dados hospedado.

Pois bem, esta semana recebi uma DM no Twitter da DevArt. Eles me convidavam para estudar e comentar a sua suite de componentes de acesso a dados, o UniDAC (Universal Data Access Components). Obviamente pelo que os componentes propõem,  aceitei de primeira, afinal pode ser a solução para a questão que citei acima.

O que é o UniDAC?

O UniDAC é uma solução multi-plataforma para o desenvolvimento de aplicações usando vários IDEs: do RAD Studio, Delphi, C ++ Builder, Lazarus (e FPC) no Windows, Mac OS X, iOS, Android além de Linux e FreeBSD.

IDEs e Plataformas suportadas pelo UniDAC

Trata-se de  uma suíte de componentes que prover banco de dados, suportando alguns dos principais SGBDs (Sistemas de Gerenciamento de Banco de Dados) conhecidos no mercado atual como: MySQL, MS SQL SERVER, Oracle, InterBase, Firebird, PostgreSQL, SQLite, DB2, Microsoft Access, além de outros banco que podem ser acessados através de ODBC.

Como o UniDAC lida com o acesso a dados?

Alguns banco de dados são acessados diretamente, sem a necessidade da biblioteca cliente. De maneira simplificada seria você não precisar distribuir a DLL do banco junto com sua aplicação para que a mesma consiga fazer acesso à base de dados.

Esquema de acesso a dados do UniDAC

Atualmente o UniDAC permite que sua aplicação Mobile ou Desktop possa trabalhar com Oracle, SQL Server, MySQL, PostgreSQL, SQLite, e NexusDB diretamente sem necessidade de biblioteca cliente do BD.

Um banco de dados MySQL  para teste

Para iniciarmos os testes, eu resolvi disponibilizar um banco de dados MySQL de exemplo hospedado em um provedor de internet e as credenciais de acesso serão passadas em nossa conexão mais adiante.

UniDac Acesso MySQL

Conhecendo a Suite UniDAC

Para conhecer um pouco mais sobre os componentes que compõem a suíte do UniDAC clique aqui.

Basicamente,  no nosso exemplo vamos fazer uma aplicação multi dispositivo que irá acessar nosso banco de dados MySQL hospedado num dado provedor de hospedagem. Por ser algo bem simples e apenas para fins de teste vamos abordar apenas 3 componentes:

Componente TUniConnection

TUniConnection  permite configurar e gerenciar a conexão com os diversos SGBDs suportados.

Componente TUniQueryTUniQuery permite a utilização de instruções SQL para recuperação, atualização e inserção dados nas tabelas.

Componente TUniProviderTUniProvider componente base para as ligações entre a aplicação e o SGBD. No nosso caso TMySQLUniProvider.

Hora de colocarmos a mão na massa

Bem vamos iniciar o Delphi XE7, e criar um nova aplicação Multi Device em branco. Nela vamos inserir os componentes da suíte UniDAC retratados acima,  e mais 1 Image, 1 ListView e 1Button, e configurá-los como segue:

  • Image1
    • Align -> Top
    • WrapMode -> Stretch
    • MultiResBitmap -> adicione um imagem a seu gosto.
  • Button1
    • Align -> Botton
    • Text -> ‘Conectar MySQL’
  • ListView1
    • Align -> Client

Ao final do deste processo sua tela terá uma aparência semelhante à imagem abaixo:

Design da Interface de Usuário -  Acesso direto a Banco de dados com UniDAC

E como configurar a suíte UniDAC

Até agora apenas colocamos na aplicação os componentes e como seria a configuração dos mesmos? Será complexo??? Bem já adianto que tudo é muito intuitivo, mas nada melhor do que conferir. Vamos lá!

No nosso componente UniConnection1 vamos alterar as propriedades como segue:

  • ProviderName -> MySQL
  • Porta -> 3306
  • LoginPrompt -> False
  • Server -> vivaitaocara.com.br
  • UserName -> vivai026_exemplo
  • Password -> exemplo

Com essas informações já estamos credenciados a acessar o servidor do MySQL hospedado no provedor, vamos então definir qual banco de dados acessar através da propriedade Database. Ao clicar no seletor a conexão será ativada e o banco de dados vivai026_bdexemplo estará disponível selecione-o.

Este processo também pode ser efetuado através do Connection Editor que pode ser acionado clicando com o botão direto no mouse sobre o componente UniConnection e selecionando esta opção. Veja  na imagem que um Wizard é aberto para alterações por telas mais amigáveis.

TUniConnection - ConnectionEditor

Nota: Desconecte a aplicação alterando a propriedade Connected do UniConnection1 para False. Pois ao selecionar o banco de dados a aplicação se conecta ao servidor e retorna as opções disponíveis, entretanto a conexão permanece ativa impossibilitando que o componente UniQuery1 possa ser testado.

Para nosso componente UniQuery1 vamos configurar as seguintes propriedades:

  • Connection -> UniConnection1
  • SQL –> ‘select * from medicamentos’

Porém ao clicar sobre o botão elipse (reticências) da propriedade SQL do UniQuery1, a janela abaixo será carregada.

UniQuery - SQL Editor

Não vamos entrar em todas as abas disponíveis na janela, vamos nos ater apenas ao comando SQL para efetuar a busca na base de dados para alimentar nossa aplicação. Finalize a janela clicando no botão OK.

Vamos agora configurar agora o clique do nosso Button1, que será responsável por conectar a aplicação e resgatar os dados do servidor preenchendo com eles o ListView1:

procedure TForm1.ConecClick(Sender: TObject);
var
  lvItem : TListViewItem;
  I: Integer;
begin
  UniConnection1.Close;
  UniQuery1.Open;
  ListView1.Items.Clear;
  ListView1.BeginUpdate;
  for I := 0 to UniQuery1.RecordCount -1 do
    begin
      lvItem := ListView1.Items.AddItem();
      lvItem.Text :=
          UniQuery1.Fields[1].AsString + ' ' +
          UniQuery1.Fields[2].AsString;
      UniQuery1.Next;
    end;
  ListView1.EndUpdate;
  UniConnection1.Close;
end;

Feito isso já podemos executar nossa aplicação. Veja que em Win32 a mesma já funciona perfeitamente:

Sem alterar nenhuma linha vamos alterá-la para distribuição na plataforma Android e confira o resultado no vídeo Abaixo:

Nota: Por ser uma versão Trial temos uma limitação de 6 campos por dataset (tabelas ou consultas)como exibido em mensagem no vídeo. Lembrando que a versão trial tem validade de 60 dias.
Mensagem de Limitação da versão Trial

TUniProvider sem configuração, mas não sem importância

Concluímos a codificação de nosso exemplo e com isso você pode ter percebido que embora tenhamos incluído em nossa aplicação o MySQLUniProvider1 (TMySQLUniProvider) ele não necessitou nenhuma configuração.

O componente cada provider usa a conectividade nativa específica do SGBD, sendo capazes de realizar as operações CRUD (Create, Read, Update, Delete) considerando automaticamente as particularidades do SGBD selecionado.

 Quer saber a importância do provider nesse caso??? Retire-o do projeto e execute-o novamente! Sem ele toda essa "mágica" não é possível, a menos que você tenha a biblioteca cliente instalada em sua máquina.

Conclusão

Com esse dia de testes cheguei a conclusão que vale muito a investir primeiro seu tempo em conhecer mais os componentes e em se adaptando perfeitamente no seu modelo de projeto por que não investir também financeiramente na aquisição da versão completa do UniDAC, afinal a mesma está sendo vendida no site da DevArt por aproximadamente US$ 200,00.

Fico por aqui, abaixo links e até a próxima!

UniDAC Versão Trial

UniDAC para compra

 


Comente