sábado, 31 de outubro de 2009

ZeosLib for Delphi 2010

Este sem dúvida é um dos projetos open source e freeware destinado aos desenvolvedores Delphi que mais eu respeito.
ZeosLib é uma biblioteca com um conjunto de ferramentas que oferece conexão nativa com vários de tipos de banco de dados (MySQL, ADO, PostgresSQL, Oracle, SQLite, Firebird, Interbase, MSSQL, Sybase).
Além de ser open source e freeware, uma das grandes vantagens em utilizar o ZeosLib é a flexibilidade e facilidade durante a migração de um banco de dados para outro, justamente pelos mesmos componentes serem utilizados para todos os tipos banco de dados que são suportados.

O objetivo desse artigo não é descrever sobre os recursos e funcionalidades do ZeosLib, mas sim anunciar que hoje essa biblioteca é compatível com o Delphi 2010. Para ser mais específico, já faz alguns meses que essa versão já é suportada pelo Delphi 2010, mas há pouco tempo alcançou um grau de estabilidade aceitável.
A última release estável é a versão 6.6.5 que foi publicada em 25/maio/2009 e oferece suporte até o Delphi 2007.
Apesar de algumas versões não oficiais serem lançadas posteriormente, usuário do Delphi 2009 e, hoje, Delphi 2010 têm ansiosamente aguardado por atualizações dessa biblioteca.
O suporte oficial da biblioteca ao Delphi 2009/2010 só está previsto para a versão 7.0 do ZeosLib que não tem um data definida para ser lançado e, acredito, ainda deve demorar um pouco. Entretanto já está disponível uma versão beta que, apesar de ainda requerer um bom trabalho, é suportado pelo Delphi 2010 e está em fase de teste (svn://zeos.firmos.at/zeos/branches/testing), mas totalmente funcional.


Download


A comunidade ZeosLib mantém o repositório svn (svn://zeos.firmos.at/zeos) onde você pode encontrar todas as versões já lançadas e as versões que estão em desenvolvimento.
Como alguma ferramenta svn client (ex. Tortoise) faça checkout do link svn://zeos.firmos.at/zeos/branches/testing para um pasta qualquer.

No final você deverá ter uma estrutura de diretórios igual ao da imagem ao lado.
Apesar de úteis (não sei se essa é a melhor classificação), apenas os diretórios packages e src são realmente relevantes (considerando que o objetivo é a instalação do pacote no RAD Studio 2010). Sendo assim, manter os demais diretórios é opcional.


Instalando o ZeosLib
A biblioteca ZeosLib é muito organizada e o processo de instalação é simples.


1. No IDE do Delphi, abra o projeto ZeosDbo.groupproj;
2. Compile todos os projetos (menu Project -> Build All Projects);
3. Instale o pacote de componentes selecionando a opção "Install" (no menu de contexto) do pacote "ZComponentDesign140.bpl";


Dependendo de como o RAD Studio está configurado, é possível que o IDE apresente uma mensagem de erro quando o segundo pacote (ZPlain140.bpl) for buildado;

[DCC Fatal Error] ZPlain.dpk(30): E2202 Required package 'ZCore' not found

Essa mensagem informa que o pacote ZCore (ZCore140.bpl) não foi encontrado.
Apesar ser clara, a mensagem não é muito intuitiva principalmente depois de ter sido buildado o primeiro pacote (ZCore140.bpl) e, consequentemente, o arquivo existir.
Na verdade o arquivo foi criado e está localizado em C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\Bpl (o diretório depende da versão do sistema operacional e o idioma do mesmo), apenas não está sendo visível pelo RAD Studio.
Para corrigir, basta incluir $(BDSCOMMONDIR)\Bpl no "Library path", como mostra a imagem abaixo.



Após isso você poderá observar a aba "Zeos Access" na Tool Palette.


Usando o Zeos DBO
Quando ainda usava o Delphi 2009, baixei uma versão super-mega-alfa, baseada na release 6.6.5, que dizia ser suportada pelo Delphi 2009. No entanto, não consegui nem mesmo realizar uma conexão com o PostgresSQL.
Com o objetivo de validar o quão estável está essa versão, resolvi fazer alguns testes com os componentes usando uma base de dados no PostgresSQL 8.4.1.

Após configurar o componente de conexão (TZConnection) com os dados para acessar uma base de dados no PostgresSQL, tentei ativar a conexão.
Nesse momento o componente apresentou a mensagem de erro abaixo.



Um detalhe que pode ser corrigido facilmente apenas acrescentando o diretório bin da instalação do postgres (provavelmente C:\Program Files\PostgreSQL\8.4\bin) no system path. Você pode também copiar os arquivos: Comerr32.dll; krb5_32.dll; libconv-2.dll; libeay32.dll; libintl-2.dll; ssleay32.dll para a pasta system32 do Windows!

Acrescentado o diretório no system path, só foi necessário reiniciar o Delphi e tudo correu muito bem.



E por falar em open source, o que acha de ajudar essa versão do ZeosLib a deixar de ser beta?

9 comentários:

Elton Pereira disse...

Este endereço do svn não tá funcionando!!!

Fabius Lovato disse...

O link está correto.
Utilizei o tortoise para fazer um checkout usando o link svn://zeos.firmos.at/zeos/branches/testing.
Fiz o upload de um print+screen que mostra o tortoise exigindo parte da estrutura do repositório svn (http://img94.imageshack.us/img94/9669/zeoslibtortoise.png).

Anônimo disse...

Olá,
Sempre usei o Zeos (hj trabalho com D2007 e Zeos 6.6.5-stable)
Estou querendo migrar p/ D2010, mas por causa das novas melhorias no D2010, eu observei q todos os TFields TStringField passaram a não ser aceitos, ele pede p/ mudar p/ TWideStringField. Se eu tiver q mudar td esses campos no meu proj. tô ferrado.
Alguem sabe se tem alguma alternativa p/ corrigir isso?

Geison disse...

No meu, ele gera um erro em zplain140.bpl

na linha de codigo 236.
MYSQL_FIELD_OFFSET = UInt;

Anônimo disse...

Já saiu a versão Zeos 7 - Alpha.
Ela instala no Delphi 2010.

Paulo

Fabius Lovato disse...

Olá a todos.
Eu publiquei um novo post comentando a integração Delphi XE (2010), o PostgreSQL 9.0 e o pacote de componentes ZeosLib versão 7 Alfa (http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html).

Um grande abraço a todos.

CPSoft disse...

Fabius esta ótimo seu post parabén mas sera que vc pode me ajudar com uma duvida estou usando D2010 + Zeos + SQLite e grava normal Ç e acentuação porem na quando abre consulta traz caracteres estranhos UNICODE sera que alguem ja viu isto???

Anônimo disse...

Nossa, cara! Na teoria é simples, mas na prática é extremamente complicado e extressante!!
Dá erros absurdos na hora de instalar e a gente tem que ficar tentando fazer gambiarras e mais gambiarras!!
A melhor coisa é desistir de usar isso e procurar algo mais simples.

Junior Oliveira disse...

OK, OBRIGADO, APESAR DE NAO TER SIDO 100% COMO VC DISSE. MAIS AQUI NO MEU DELPHI 2010 ESTA SO UM FILE, AGRADEÇO