Revista Do Linux
 
EDIÇÃO DO MÊS
 CD do Mês

 Capa
 Estudo de Caso
 Entrevista
 Corporativo
 Software
 Desenvolvimento
 Iniciantes
 Hardware
 Distro
 Tutorial
 Segurança
 Sistema
 Banco de Dados
 
 
 
Primeiros passos em Kylix - Parte III
Acesso a Banco de dados

 
Nos artigos anteriores desta série, mostramos como desenvolver pequenos programas com o Kylix, mas esses programas não faziam acesso a bancos de dados, não possibilitando o armazenamento e recuperação das informações. Neste artigo, daremos uma introdução ao acesso a banco de dados feito com o Kylix, permitindo que os dados de um cadastro possam ser lidos, alterados e salvos.
As partes anteriores deste tutorial podem ser seguidas usando-se a versão open source do Kylix, que foi distribuída na RdL 21. Esta é uma versão gratuita, permitindo o desenvolvimento de programas sob licença GPL, porém ela não contém a funcionalidade de acesso a banco de dados.
Para seguir este artigo, se você não tiver a versão comercial do Kylix, você pode baixar uma versão de demonstração, válida por 30 dias. É uma versão completa, por prazo limitado e também está disponível no site da Borland.
 
Acesso a banco de dados
 
Com o Kylix, a Borland disponibilizou um novo engine de acesso a banco de dados: o dbExpress. O engine de banco de dados do Delphi, o BDE era muito grande e complexo e era alvo de muitas críticas. Com o Kylix, os projetistas da Borland tiveram a oportunidade de criar um novo engine, muito mais leve e rápido, chamada dbExpress.
O acesso é feito pelos componentes de acesso a bancos de dados, que internamente usam uma série de funções do dbExpress que, por sua vez, utiliza-se de drivers para acesso aos diversos bancos de dados, como mostra a Figura 1.
Figura 1 - Acesso a banco de dados com dbExpress.
 
Atualmente, existem drivers para acesso a Interbase, MySQL, Oracle e DB/2, mas já existem drivers de terceiros para acesso à ODBC, permitindo acessar qualquer banco ligado a ela, inclusive PostgreSQL e MS-SQL.
O acesso a bancos de dados em linguagens tradicionais é feito por meio de APIs (Application Programming Interface - Interface de Programação de Aplicações), um conjunto de funções disponibilizadas pelo fabricante do banco de dados. Munido desta interface, o desenvolvedor chama as funções que executam determinada tarefa sobre o banco de dados. O acesso feito desta maneira, embora muito eficiente, tem duas desvantagens:
· Limita o acesso a apenas um banco de dados - cada fabricante disponibiliza sua API, que é incompatível com a dos demais fabricantes.
· A programação é extremamente demorada: a documentação é, em geral, bastante complicada e, muitas vezes, deve-se chamar uma série de funções na seqüência para executar uma única tarefa.
O uso de um engine de acesso uniformiza a API: a única API que deve ser aprendida é aquela do engine - os drivers encarregam-se de fazer a interface entre o engine e o banco de dados.
Por ser um engine essencialmente baseado em SQL, esta versão não permite acessar bancos de dados desktop, como Paradox ou dBase.
Outra desvantagem deste engine é o fato de ele ser unidirecional, isto é, não se pode navegar nos dados em todas as direções, mas apenas para a frente, como num relatório. Adiante mostraremos as ferramentas que a Borland disponibilizou para contornar esta limitação.
 
Componentes de acesso a bancos de dados
 
Para usar o dbExpress, podemos usar a sua API, mas isto não é muito funcional: estamos falando de uma ferramenta de programação visual. A Borland disponibilizou uma série de componentes para acesso a bancos de dados que encapsulam as funções necessárias para a recuperação das informações. Estes componentes estão na guia dbExpress da paleta de componentes, mostrada na Figura 2.
Figura 2 - Guia dbExpress da paleta de componentes.
 
O componente TSQLConnection determina a ligação ao banco de dados. Quando você insere este componente na Form e dá um clique duplo, é mostrada a tela de configuração (Figura 3), onde você pode indicar os parâmetros da conexão: tipo do banco de dados, nome do arquivo físico, entre outros.
Figura 3 - Tela da configuração da conexão.
 
Uma vez configurada a conexão, você pode colocar um componente TSQLDataset, que representa uma tabela, consulta ou stored procedure do banco de dados. Este componente irá fornecer os dados que serão mostrados na tela. Este componente é unidirecional e, desta maneira, não seria possível navegar livremente pelos dados. Para contornar esta limitação, a Borland "emprestou" um componente de uma tecnologia de três camadas, chamado TClientDataset. Ele é um componente muito versátil que permite receber dados de diversos lugares, como de uma aplicação remota, de uma tabela XML, editando os dados em memória.
O TClientDataset permite navegação em todas as direções e soluciona o problema da navegação unidirecional do TSQLDataset. Os dados da TSQLDataset são transferidos, através de um provedor de dados representado por um TdatasetProvider ao TClientDataset e a navegação e edição processa-se nele.
Quando se quer gravar os dados no banco de dados usa-se o método ApplyUpdates e a gravação é efetivada. A Figura 4 mostra o esquema de conexão entre os componentes.
Figura 4 - Esquema de conexão entre os componentes
 
Note que aqui não há três camadas. Toda esta conexão se processa na aplicação. A criação de aplicações em três camadas não está disponível na versão Kylix Open Edition.
Para facilitar o uso deste tipo de conexão, a Borland criou o componente TSQLClientDataset, que encapsula os componentes TClientDataset, TDatabaseProvider e TSQLDataset, dispensando a necessidade de configuração dos três componentes individualmente e da conexão entre eles. Com este componente, pode-se fazer a navegação em todas as direções, alterando os dados, se necessário.
Além destes componentes, a guia dbExpress contém os componentes TSQLQuery, TSQLTable e TSQLStoredProc, que são equivalentes àqueles que fazem acesso a BDE, criados para facilitar a transposição de aplicações criados no Delphi para o Kylix.
 
Componentes Data Aware
 
O passo seguinte é mostrar as informações provenientes do banco de dados e mostrá-las ao usuário, obtendo as modificações necessárias. Uma maneira de fazer isto é posicionar uma tabela no ponto desejado, recuperar os dados, alimentando uma série de componentes visuais. Quando o usuário confirma as alterações, as informações são recolhidas e transmitidas ao banco de dados.
Embora esta maneira esteja correta, não é a ideal: o Kylix disponibiliza versões de seus componentes ligados ao banco de dados - a recuperação e recolhimento das informações é feita de maneira automática, sem que seja preciso escrever código para isto. Estes componentes são chamados de componentes Data Aware. Eles estão situados na guia DataControls da paleta de componentes mostrada na Figura 5.
Figura 5 - Guia Data Controls da paleta de componentes.
 
A ligação entre os componentes Data Aware e o Dataset (o componente que acessa os dados) é feita com um componente TDataSource, da guia DataAccess. Devemos ligar o componente Data Aware ao TDataSource e, por sua vez, ligar este ao Dataset. Esta camada extra traz a flexibilidade de se poder mudar o componente de acesso a dados sem precisar mexer na interface visual.
 
Desenvolvendo uma aplicação de banco de dados
 
Munidos dos conceitos de acesso aos bancos de dados com o dbExpress, podemos criar uma aplicação que mostra os dados de uma tabela, permitindo sua movimentação, tanto na forma de grade como na forma de detalhe.
Crie uma nova aplicação usando a opção de menu File -> New Application.
Na Form principal, insira um componente TSQLConnection, da guia dbExpress, dando um clique duplo sobre ele para abrir sua tela de configuração. Você deve ter o Interbase instalado em sua máquina para que o programa funcione. Se não tiver, baixe a versão free e instale-o, como foi mostrado na RdL número 11. Na tela de configuração são mostradas todas as conexões disponíveis. Crie uma nova, dando um clique no primeiro botão da barra de ferramenta e dê o nome RdL para ela. Configure a propriedade DatabaseName para /opt/interbase/examples/employee.gdb. Note que o diretório deve ser aquele onde você instalou o Interbase, que no meu caso foi /opt/interbase. Caso você tenha instalado o Interbase em outro local, altere o diretório de acordo. Confirme, clicando no penúltimo botão e clique no último botão para testar a conexão. Se tudo estiver ok, você está conectado ao banco de dados.
Feche a janela e, no Object Inspector, configure a propriedade Login Prompt para False e, na propriedade Params, insira as seguintes linhas:
 
User name=SYSDBA
Password=masterkey
 
Desta maneira, quando acessar o banco de dados, não será solicitada a senha de acesso.
Insira um componente TSQLClientDataset e configure a propriedade DBConnection para SQLConnection1. Configure a propriedade Command Type para ctTable e a propriedade CommandText para BioLife. Altere a propriedade Active para True.
Insira um componente TDatasource, configurando sua propriedade Dataset para Dataset1.
No topo da Form insira um componente TDBNavigator, da guia DataControls. Este componente tem botões para facilitar a navegação entre os dados. Configure sua propriedade Datasource para Datasource1.
Insira um componente TDBGrid e configure sua propriedade Datasource para Datasource1. Abaixo da Grid, coloque dois componentes TDBEdit, configurando suas propriedades Datasource para Datasource1.
Configure a propriedade DataField do primeiro TDBEdit para First_Name e do segundo para Last_Name. Você deve ter uma tela como a da Figura 6.
Figura 6 - Aplicação de acesso a dados.
 
Note que, à medida que você coloca os componentes na Form e configura suas propriedades, os dados da tabela são mostrados. Como você pode ver, sem escrever uma linha de código, o Kylix permite mostrar uma tabela, com um campo memo e um campo gráfico, mesmo em tempo de projeto.
Se você executar o programa, verá que é possível navegar pela tabela usando o navigator ou selecionando um novo registro da grade.
Você pode inclusive alterar os dados. Porém, se alterá-los, quando sair do programa e voltar a ele, verá que as alterações não foram efetivadas no banco de dados. Isto se deve ao fato de estarmos editando os dados na memória e não aplicando as alterações ao banco de dados físico, uma conseqüência do uso do TSQLClientDataset. Para aplicar as alterações ao banco de dados, você deve colocar um botão na Form, alterando sua propriedade Caption para Salva Dados.
Dê um clique duplo no botão para abrir o editor de código em seu evento OnClick, digitando o seguinte:
 
SQLClientDataset1.ApplyUpdates(-1);
 
Desta maneira, ao clicar no botão, os dados serão gravados fisicamente. Execute a aplicação e veja que, quando você altera os dados e clica no botão, os dados são efetivamente gravados.
Como pudemos ver aqui, o Kylix facilita muito o acesso a bancos de dados. Com apenas uma linha de código, você foi capaz de criar uma aplicação que navega numa tabela, tanto no formato de grade como de detalhe e permite alterar os dados.
 
Para saber mais:
 
Download do Kylix Trial e Kylix Open Source:
Download do Interbase Open Source:
 
 
 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux