Back-End

12 jun, 2008

Conexão com MySQL em BDS 2006 aplicação VCL for Win32

Publicidade

A Borland tem, há um tempo considerável, uma IDE muito boa para desenvolvimento de aplicações desktop. A linguagem “object pascal” é hoje usada nos mais variados softwares.

Uma das facilidades do Delphi ou “Borland Developer Studio” (BDS) sempre foi o acesso a dados, isso através dos componentes de várias “paletas”. O conjunto de componentes de acesso a dados mais versátil que há no Delphi é a paleta DBexpress, podendo a partir desta acessar bases Sybase, Interbase/Firebird, Oracle, Sql Server, DB2, Informix e MySQL.

Todas essas bases são acessadas com o mesmo componente, porém para MySQL há uma DLL com problemas desde o Delphi 6 que é lá de meados de 2001, e isso não foi corrigido para win32. Não dar atenção para o banco MySQL em 2001 até era justificável, porém hoje o MySQL é um banco presente e usado em situações de alta responsabilidade inclusive.

Para podermos nos beneficiar do acesso a MySQL a partir do componente de conexão da DBexpress, precisamos apenas substituir as DLL´s com problemas por outras que podem ser baixadas aqui, estas são inclusive GPL. A DBexpress é tão elogiada justamente por interagir com diversos bancos de dados e isso não influenciar na codificação, é praticamente uma camada de abstração de banco de dados tal como ADODB.

As DLL´s funcionam em Delphi 6, 7, 8, 2005 e 2006. Nas demais versões não foram testadas, pode ser que funcionem. Se não funcionarem, sinta-se livre para obter o código-fonte e fazer as correções necessárias.

Iniciando uma aplicação com BD MySQL

Para exemplificar em que momento e onde se colocam as DLL´s, vamos fazer o início de uma aplicação Win32 em Delphi 2006. O processo é o mesmo nas diversas versões do Delphi com pequenas variações de menu.

Abra o Delphi, crie um novo projeto, no 2006 escolhemos “VCl Forms Application“. Feito isso um “form” vai ser mostrado.

Para testes, os componentes de conexão e acesso a dados podem até ser colocados em um “form“, em aplicações maiores, o recomendado é criar uma “Data Module“. Na “Data Module” organizamos os componentes de acesso a dados.

Para criar uma “Data Module“, vá no menu “file” -> “new” -> “other” e na tela seguinte escolha “Data Module“.

Criada a “Data Module“, procure na paleta DBexpress o componente “SQLConnection“. Adicione-o na “Data Module“.

Nesse momento recomendo que salve todos os arquivos, e compile o software. No meu caso salvei tudo em “C:\bin_programa“.

Cole neste diretório as DLL´s baixadas. Lembre-se que o executável primeiro vai buscar as dependências na própria pasta do executável e depois nas outras pastas do sistema (“system32” por exemplo). Ao distribuir o software, executar em outra máquina, leve junto essas DLL´s.

Depois de estarem as DLL´s no mesmo diretório que o executável do software, podemos prosseguir.

Vamos então configurar uma conexão MySQL. Dois Cliques sobre o “SQLConnection“, depois clique no “add Conection” para criar uma nova conexão. No driver escolha “MySQL” e como sugestão dê o nome de “conn“.

Ao dar “OK” na tela anterior passamos agora a configurar o acesso a base de dados. No meu caso estou acessando o banco “bacaxi” que está em “localhost“, uso o usuário “root” que não tem senha.

Feita a configuração, vamos testar se a conexão realmente ocorreu, clique no ícone “Test Connection“. Ocorrendo tudo certo um alerta com “Successfully Connected” deve ser exibido.

Como sugestão no “Object Inspector” do objeto de conexão, sete o “LoginPrompt” para “false“.

Considerações finais

Não haverá uma seqüência desse artigo onde faremos uma aplicação funcional. O objetivo era apenas mostrar como fazer para conectar, já que o restante é igual com qualquer driver que se use na DBexpress.

Funcionando uma conexão nativa, não se precisa mais recorrer a ODBC para conexão, isso torna mais viável por exemplo uma integração de uma solução web e desktop, sem uso de WebService ou outro método para sincronizar dados.

Agradecimento ao professor Fauzi Shubeita por compartilhar da sua experiência.

Texto relacionado:

http://delphiboy.blogspot.com/2007/05/conexo-delphi-2006-x-dbexpress-x-mysql.html

Fonte das DLL`s:

http://www.justsoftwaresolutions.co.uk/delphi/dbexpress_and_mysql_5.html