Esse artigo faz parte da revista Clube Delphi edição 38. Clique aqui para ler todos os artigos desta edição



Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.


Migrando para Delphi 7: Dados

Parte 2: diga adeus ao BDE e adote o dbExpress

 

Vimos na edição 36 da ClubeDephi como migrar pacotes e aplicações feitas no Delphi 5 (ou anterior) para o Delphi 7. nesta segunda parte, daremos continuidade ao assunto, entretanto em um ponto crítico de migração para o Delphi 7, a substituicção do BDE (Borland DataBase Engine) pelo dbExpress. Como sabemos, a Borland já anuncioou a “morte” do BDE há cerca de dois anos. O BDE foi decontinuado e provavelmente não virá ao Delphi 8.

A mudança não foi apenas na paleta de componentes e no nome das classe. Houve uma udança profunda na filisofia de acesso a dados, principalmente na forma que as informações retiradas do banco de dados são mannipuladas no lado do cliente. Por exemplo, você não usa uma Query do dbExpress (a SQLQuery) como usava uma Query do BDE.

Para um melhoe entendimento do processo de migração e cuidados que devem ser tomados, nada melhor do que fazermos uma aplicaçãi BDE em Delphi 5 e depois migrarmos passo a passo para o dbExpress do Delphi 7.

Não farei aqui uma introduçãi ao dbExpress e ao uso de cursores unidirecionais, já que o assunto foi amplamente discutido na edição 22, onde apresentamos uma introdução ao dbExpress e uso do ClientDataSet. O principal foco deste artigo será apresentar as diferenças entre dbExpress e BDE relevantes para a migração do Delphi 5 para o Delphi 7. vale lembrar que as técnicas discutidas se aplicam também à migração para o Delphi 6.

 

Aplicação BDE

Vamos supor neste artigo que você já esteja familirizado com o acesso a dados, com linguagem SQL e com o uso dos componentes de acesso a dados para o BDE. Crie um banco de dados simples no interBase (ou seu banco SQL preferido). Com uma única tabela contendo dois campos, sendo um identificador tipo integer (chamado id) e um campo tipo varchar, chamado NOME. Dê o nome de FOO a tabela.

Em uma nova aplicação Delphi, crie um Data Module e nele colque e configure um componente Database (use configurações locais com a propriedade Params, o que dispensa a criação de um Alias). Certifique-se que o Data Module seja criado antes do fomulário principal.

Depois adicione uma Query com a instrução SQL “select * from FOO order by ID”. Deixe esta Query desatuvada. No formulário principal, configuramos os controles de acesso a dadsos e um DataSource, que aponta para a Query no Data Module. Coloque  também alguns botões para chamar os métodos de navegação e manutenção dos registros (simulando um DBNavigator) – veja a primeira parte da Figura 1. usaremos somente os métodos principais da Query.

 

 

Para o evento OnClick do botão “anterior” escreva “DataModule.Query.Prior”. para os demais botões use os métodos Next, post, append e applyupdates, respectivamente. No evento OnCreate do formulário, abrimos a query principal. Apriveitamos também para controlar o tempo de abertura da consulta e motrar o resultado em uma statusbar. A segunda parte da Figura 1 mostra o formulário e o Data Module.

Para demonstrar como ficará a velocidade de acesso à tabela com o dbExpress, comparando ao BDE, inseri nela 100 mil registros com dados gerados aleatoriamente. Por incrível que pareça, ao rodar a aplicação, o tempo de abertuda da query mostrado na statusbar é tão pequeno que nem mesmo pode ser representando pela função timetostr.

Mas como pode isso acontecer, se a tabela tem 100 mill registros e nossa instrução é um “select *”, sem nem sequer uma cláusula where? Tem algo estranho aqui. Você pode escrever a pior instrução “select” possível, e a tela não vai nem piscar. Mas o que o BDE faz afinal?

...

Quer ler esse conteúdo completo? Tenha acesso completo