Páginas

quinta-feira, 20 de maio de 2010

Lazarus - Aplicação embarcada com Firebird e ZeosLib

Uma aplicação embarcada, ou embutida, com Firebird é uma aplicação que não necessita do servidor de banco de dados para executar. É uma solução excelente para criar demos de programas, criar um catálogo de produtos em CD, entre outras aplicações. Resumidamente, o motor do Firebird embedded está em uma dll.
A versão embedded do Firebird executa apenas em modo local, não reconhecendo nem mesmo localhost. Ela ignora qualquer instância do Firebird executando na mesma máquina. Procure usar sempre o usuário SYSDBA para a conexão com o banco. Como não existe a figura de um servidor de banco de dados, você poder rodar quantas aplicações forem necessárias. Cada uma será uma instância diferente. Tudo depende da memória da máquina.

Instalação do Firebird

O primeiro passo consiste em fazer o download da versão embarcada do Firebird. Escolha a versão e a plataforma desejada em http://www.firebirdsql.org/index.php?op=files. Vamos mostrar aqui apenas o procedimento para o ambiente Windows. Você deve baixar a versão embedded. Por exemplo, se optar pela versão 2.1.3, você pode baixar este zip. Depois disso, crie um diretório (p.ex. C:\MeuPrograma) onde ficará sua aplicação e descompacte o zip que você baixou dentro dele. Esse diretório será o home do Firebird embutido. O banco de dados deve ficar nesse mesmo diretório. Em seguida faça o seguinte:
1) Edite o arquivo firebird.conf e modifique a seguinte linha para ficar assim:

RootDirectory = C:\MeuPrograma

2) Altere o nome do arquivo fbembed.dll para fbclient.dll, se você for usar o ZeosLib. Se for usar o SQLdb, renomeie para gds32.dll.

Se sua aplicação utilizar UDFs, copie-as para o diretório UDF. Collates e charsets devem ser copiados para o diretório INTL.

Conectando ao banco de dados com ZeosLib

Coloque um TZConnection no Data Module. Defina as seguintes propriedades assim:

Database - informe apenas o nome do arquivo do banco de dados.
HostName - deixe em branco.
Name - dbEmbutido, por exemplo.
Password - masterkey.
Protocol - firebird-2.0.
User - sysdba.

Não tente conectar ao banco em tempo de desenvolvimento. Não irá conectar. Escreva o seguinte código no evento OnCreate do Data Module:

dbEmbutido.Connect;

Os outros procedimentos são exatamente os mesmos de uma conexão normal como mostramos em Lazarus - Conectando Firebird com ZeosLib ou SQLdb. Para construir uma interface leia os posts Lazarus - Acessando banco de dados com SQLdb - Parte I e Parte II.Se preferir usar SQLdb para embarcar sua aplicação siga exatamente o mesmo procedimento do post anterior. Só lembre de renomear fbembed.dll para gds32.dll.

Atualizado em 23/05/2010.

7 comentários:

Geovane disse...

Olá Professor Carlos, como vai?

Como procedo para desenvolver uma aplicação embarcada com Lazarus e Firebird no Ubuntu 9.10?

Obrigado pelas preciosas dicas. Parabéns pelo site.

Professor Carlos disse...

Oi Geovane

Eu ainda não consegui também. Veja esses links:

http://www.firebirdfaq.org/Firebird-Embedded-Linux-HOWTO.html
http://www.firebirdsql.org/manual/ufb-cs-embedded.html#ufb-cs-embedded-linux

São dicas para a versão 1.5. Eu estou com a versão 2.1 no Ubuntu. E seguindo esses procedimentos não funciona. Ainda estou procurando mais informações.
Assim que eu conseguir vou publicar um post.

Abraço

Anônimo disse...

tinha feito uma aplicacao a um tempo atras e nao lembrar ao certo os passos pra conectar.

grato

Alberto Caribe' disse...

Prof. Carlos Araujo: Trabalho com programacao, em tempo parcial, porque
sou engenheiro metalurgista e dirijo
uma empresa.

Mas programo em Pascal (hoje Delphi)
h'a mais de 20 anos. Preciso de consultoria em FB-SQL, e gostaria de
discutir consigo como podemos ajustar
isso, em termos de tempo disponivel,
e forma de pagamento.

Alberto Caribe'
acaribe2000@that.com.br

Professor Carlos disse...

Oi Alberto

Não consegui enviar e-mail a você. Pode entrar em contato pelo meu e-mail por favor.

Luis Antonio Fessel disse...

Boa tarde Professor.
Uso o Firebird desde a versão 1.5 mas, até agora, não encontrei uma boa explicação sobre as diferrenças entre as diversas versões do mesmo.
O Sr. teria algum link com estas informações, ou poderia me responder sobre essas diferenças.
Gostaria de saber sobre o CS, o SS e as evoluções numéricas (melhorias/alterações).
Agradeço a atenção.

Professor Carlos disse...

Luis

Aqui http://www.firebirdsql.org/en/release-notes/ tem alguma coisa que pode ser útil.

 
Creative Commons License
This work by Carlos Alberto P. Araújo is licensed under a Creative Commons Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Brasil License.