Neste artigo veremos como compilar o driver Qt de acesso ao Firebird no Windows®.
Estou presumindo que você ira compilar o driver após a compilação da própria biblioteca Qt, e, obviamente, o Firebird deve estar instalado.
Sobre a compilação do driver Qt Firebird no Windows®, existe um bug relatado como BUG 1996.
Aqui, o endereço especifico deste bug,na pagina http://bugreports.qt.nokia.com:
http://bugreports.qt.nokia.com/browse/QTBUG-1996
Abaixo, o que diz o texto:
O texto mostra o procedimento para contornar o bug, na verdade muito simples, mas não consta da documentação da Qt ainda, o que pode confundir os usuários.
A documentação da Qt indica este procedimento para gerar o driver Qt Firebird no Windows®, observe que a correção do bug não consta da documentação:
O procedimento com o Firebird é o mesmo dos outros bancos, ele deve ser instalado no diretório raiz, C:\ e não em C:\Arquivos de programas.
Edite o PATH do Windows® e insira os caminhos do Firebird.
Vá em Iniciar->Configurações->Painel de controle->Sistema->Avançado e clique em “Variáveis de ambiente”, edite a variável PATH, adicionando de preferência no inicio da variável os caminhos do MinGw, da Qt e do Firebird.
No meu caso, inclui apenas C:\Firebird\Firebird_2_1\bin no PATH, mas você pode, por via das duvidas, incluir também C:\Firebird\Firebird_2_1\lib e C:\Firebird\Firebird_2_1\include. Este é o PATH no meu computador:
Lembre-se sempre de trocar os numeros de versão da Qt e do Firebird pelos numeros da versão que você esta utilizando.
O exemplo abaixo pressupões que o Firebird esteja instalado em C:\Firebird e já inclui a correção do bug relatado.
Vá para o diretorio C:\Qt\4.5.3\src\plugins\sqldrivers\ibase e digite:
Se não ocorrer nenhum erro, o driver sera compilado e copiado para o diretorio C:\Qt\4.4.3\plugins\sqldrivers, seu nome é qsqlibase4.dll.
Para distribuir seu aplicativo pelas estações de uma rede intranet de maneira que eles acessem o banco de dados no servidor, neste caso o Firebird, um fator importante é a hierarquia de diretórios e a distribuição das DLL's e dos drivers de acesso a banco de dados em cada computador da rede, isto é de suma importância, pois pode trazer alguns problemas.
As DLL's dos exemplos abaixo se referem a conexão com um banco Firebird, podem ser encontradas no diretório da instalação do Firebird, na minha maquina é:
Firebird:
C:\Firebird\Firebird_2_1\bin
As DLL's da Qt:
C:\Qt\4.5.0\bin
Os drivers da Qt para acesso ao Firebird:
C:\Qt\4.5.0\plugins\sqldrivers
A hierarquia de diretórios é esta para para o aplicativo e as DLLs na estação:
Abaixo, imagem da hierarquia de diretórios, onde se vê o nome meuApp você pode nomear como quiser.(Clique na imagem para ampliar):
>
Abaixo, todos os arquivos e DLLs necessários distribuidos pelos diretórios:
>
Abaixo, listagem obtida a partir de um comando “DIR” do DOS dentro dos diretórios mostrando as DLL's e os drivers.
Depois disso instale o Firebird-Client nas estações, use o mesmo instalador do Firebird Server, selecione a opção "Instalação miníma do Cliente - sem servidor, sem ferramentas".
Isto é necessário para que sejam instaladas algumas DLLs necessárias.
Abaixo, instalador do Firebird com a opção "Instalação miníma do Cliente - sem servidor, sem ferramentas" selecionada.(Clique na imagem para ampliar):
>
O Firebird, ao contrario do PostgreSql e do MySql já vem configurado para permitir acesso remoto, basta dar permissão ao usuário que você ira utilizar para acessar o banco.
Seguem alguns links sobre configuração do Firebird em rede, inclusive sobre segurança no Firebird, nele devemos nos preocupar em talvez bloquear o acesso remoto, já que ele por padrão é instalado com esse acesso liberado.
Instalando Firebird em rede no Windows®: http://www.comunidade-firebird.org/cflp/downloads/CFLP_O027.PDF
Protegendo seu Servidor Firebird: http://www.comunidade-firebird.org/cflp/downloads/CFLP_T016.PDF
Se ocorrer algum problema de conexão,relativo a libs ou DLLs não encontradas pelo seu aplicativo na estação, por exemplo, o aplicativo pode não conseguir carregar o driver, qsqlibase4, devido a algum problema na FBCLIENT.dll, que é a principal, o "client" do Firebird, você pode usar um excelente software chamado Dependency Walker , que analisa as dependências entre as DLLs e mostra uma possível dependência quebrada, DLLs faltando ou DLLs incompatíveis.
Você pode baixá-lo diretamente do site dele, depois crie uma pasta no diretório raiz e descompacte o arquivo nesta pasta, ele não cria atalho no desktop nem entrada no menu iniciar, basta rodar o Dependency Walker direto da pasta onde ele esta,vá ao menu File->Open e escolha uma DLL ou executável, é só isso, ele ira abrir e analisar, conforme a imagem abaixo..
Abaixo, o Dependency Walker analisando a qsqlibase4 e suas dependências.(Clique na imagem para ampliar):
>
Estou presumindo que você ira compilar o driver após a compilação da própria biblioteca Qt, e, obviamente, o Firebird deve estar instalado.
Sobre a compilação do driver Qt Firebird no Windows®, existe um bug relatado como BUG 1996.
Aqui, o endereço especifico deste bug,na pagina http://bugreports.qt.nokia.com:
http://bugreports.qt.nokia.com/browse/QTBUG-1996
Abaixo, o que diz o texto:
Description The libs are called fbclient_bor.lib and fbclient_ms.lib, respectively, whereas Qt by default links against fbclient.lib. The workaround is to call qmake like this: qmake -o Makefile "INCLUDEPATH+=C:\pathtofirebird\include" "LIBS+=-LC:\pathtofirebird\lib -lfbclient_ms" ibase.pro
O texto mostra o procedimento para contornar o bug, na verdade muito simples, mas não consta da documentação da Qt ainda, o que pode confundir os usuários.
A documentação da Qt indica este procedimento para gerar o driver Qt Firebird no Windows®, observe que a correção do bug não consta da documentação:
How to Build the QIBASE Plugin on Windows The following assumes InterBase or Firebird is installed in C:\interbase: If you are using InterBase: cd %QTDIR%\src\plugins\sqldrivers\ibase qmake "INCLUDEPATH+=C:\interbase\include" ibase.pro nmake If you are using Firebird, the Firebird library has to be set explicitely: cd %QTDIR%\src\plugins\sqldrivers\ibase qmake "INCLUDEPATH+=C:\interbase\include" "LIBS+=-lfbclient" ibase.pro nmake If you are not using a Microsoft compiler, replace nmake with make in the line above. Note that C:\interbase\bin must be in the PATH.
O procedimento com o Firebird é o mesmo dos outros bancos, ele deve ser instalado no diretório raiz, C:\ e não em C:\Arquivos de programas.
Edite o PATH do Windows® e insira os caminhos do Firebird.
Vá em Iniciar->Configurações->Painel de controle->Sistema->Avançado e clique em “Variáveis de ambiente”, edite a variável PATH, adicionando de preferência no inicio da variável os caminhos do MinGw, da Qt e do Firebird.
No meu caso, inclui apenas C:\Firebird\Firebird_2_1\bin no PATH, mas você pode, por via das duvidas, incluir também C:\Firebird\Firebird_2_1\lib e C:\Firebird\Firebird_2_1\include. Este é o PATH no meu computador:
C:\MinGW\bin;C:\Qt\4.5.3\bin;C:\PostgreSQL\8.4\include;C:\PostgreSQL\8.4\lib;C:\PostgreSQL\8.4\bin;C:\MySQL\bin;C:\Firebird\Firebird_2_1\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0
Lembre-se sempre de trocar os numeros de versão da Qt e do Firebird pelos numeros da versão que você esta utilizando.
O exemplo abaixo pressupões que o Firebird esteja instalado em C:\Firebird e já inclui a correção do bug relatado.
Vá para o diretorio C:\Qt\4.5.3\src\plugins\sqldrivers\ibase e digite:
qmake "INCLUDEPATH+=C:\Firebird\Firebird_2_1\include" "LIBS+=-lfbclient" "LIBS+=-L C:\Firebird\Firebird_2_1\bin" "LIBS+=-L C:\Firebird\Firebird_2_1\lib" LIBS+="-lfbclient_ms" ibase.pro make
Se não ocorrer nenhum erro, o driver sera compilado e copiado para o diretorio C:\Qt\4.4.3\plugins\sqldrivers, seu nome é qsqlibase4.dll.
Para distribuir seu aplicativo pelas estações de uma rede intranet de maneira que eles acessem o banco de dados no servidor, neste caso o Firebird, um fator importante é a hierarquia de diretórios e a distribuição das DLL's e dos drivers de acesso a banco de dados em cada computador da rede, isto é de suma importância, pois pode trazer alguns problemas.
As DLL's dos exemplos abaixo se referem a conexão com um banco Firebird, podem ser encontradas no diretório da instalação do Firebird, na minha maquina é:
Firebird:
C:\Firebird\Firebird_2_1\bin
As DLL's da Qt:
C:\Qt\4.5.0\bin
Os drivers da Qt para acesso ao Firebird:
C:\Qt\4.5.0\plugins\sqldrivers
A hierarquia de diretórios é esta para para o aplicativo e as DLLs na estação:
seuApp
|----->sqldrivers
Abaixo, imagem da hierarquia de diretórios, onde se vê o nome meuApp você pode nomear como quiser.(Clique na imagem para ampliar):
>

Abaixo, todos os arquivos e DLLs necessários distribuidos pelos diretórios:
>
Abaixo, listagem obtida a partir de um comando “DIR” do DOS dentro dos diretórios mostrando as DLL's e os drivers.
O volume na unidade C não tem nome. O número de série do volume é 60DB-CB30 Pasta de C:\cadastro_firebird 19/11/2009 10:22. 19/11/2009 10:22 .. 17/11/2009 17:48 130.048 cadastro.exe 18/11/2009 16:44 593 config.txt 22/07/2009 17:46 450.560 FBCLIENT.dll 10/01/2009 18:32 11.362 mingwm10.dll 07/11/2009 16:17 2.737.664 QtCore4.dll 07/11/2009 16:39 11.280.384 QtGui4.dll 07/11/2009 16:40 309.248 QtSql4.dll 19/11/2009 10:21 sqldrivers 7 arquivo(s) 14.919.859 bytes 3 pasta(s) 16.215.343.104 bytes disponíveis O volume na unidade C não tem nome. O número de série do volume é 60DB-CB30 Pasta de C:\cadastro_firebird\sqldrivers 19/11/2009 10:21 . 19/11/2009 10:21 .. 14/11/2009 11:03 134.656 qsqlibase4.dll 1 arquivo(s) 134.656 bytes 2 pasta(s) 16.215.343.104 bytes disponíveis
Depois disso instale o Firebird-Client nas estações, use o mesmo instalador do Firebird Server, selecione a opção "Instalação miníma do Cliente - sem servidor, sem ferramentas".
Isto é necessário para que sejam instaladas algumas DLLs necessárias.
Abaixo, instalador do Firebird com a opção "Instalação miníma do Cliente - sem servidor, sem ferramentas" selecionada.(Clique na imagem para ampliar):
>
O Firebird, ao contrario do PostgreSql e do MySql já vem configurado para permitir acesso remoto, basta dar permissão ao usuário que você ira utilizar para acessar o banco.
Seguem alguns links sobre configuração do Firebird em rede, inclusive sobre segurança no Firebird, nele devemos nos preocupar em talvez bloquear o acesso remoto, já que ele por padrão é instalado com esse acesso liberado.
Instalando Firebird em rede no Windows®: http://www.comunidade-firebird.org/cflp/downloads/CFLP_O027.PDF
Protegendo seu Servidor Firebird: http://www.comunidade-firebird.org/cflp/downloads/CFLP_T016.PDF
Segurança em Aplicações com o Firebird: http://www.comunidade-firebird.org/cflp/downloads/CFLP_O025.PDF
Se ocorrer algum problema de conexão,relativo a libs ou DLLs não encontradas pelo seu aplicativo na estação, por exemplo, o aplicativo pode não conseguir carregar o driver, qsqlibase4, devido a algum problema na FBCLIENT.dll, que é a principal, o "client" do Firebird, você pode usar um excelente software chamado Dependency Walker , que analisa as dependências entre as DLLs e mostra uma possível dependência quebrada, DLLs faltando ou DLLs incompatíveis.
Você pode baixá-lo diretamente do site dele, depois crie uma pasta no diretório raiz e descompacte o arquivo nesta pasta, ele não cria atalho no desktop nem entrada no menu iniciar, basta rodar o Dependency Walker direto da pasta onde ele esta,vá ao menu File->Open e escolha uma DLL ou executável, é só isso, ele ira abrir e analisar, conforme a imagem abaixo..
Abaixo, o Dependency Walker analisando a qsqlibase4 e suas dependências.(Clique na imagem para ampliar):
>