Neste tutorial veremos como compilar o driver Qt de acesso ao PostgreSql no Windows®.
Dos bancos de dados Open Source de que eu vou tratar nos tutoriais, PostgreSql, MySql e Firebird, o driver do PostgreSql é o mais fácil de compilar no Windows®.
Lembre-se sempre de instalar o PostgreSql no Windows® no diretório raiz, C:\ , e não em C:\Arquivos de programas para evitar espaços em branco no caminho do arquivo, o Qmake não entende espaços em branco em nomes de diretórios.
Estou presumindo que você ira compilar o driver após a compilação da própria biblioteca Qt, e, obviamente, o PostgreSql deve estar instalado.
Edite o PATH do Windows® e insira os caminhos do PostgreSQl.
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 Postgresql.
Este é o PATH no meu computador:

C:\MinGW\bin;C:\Qt\4.4.3\bin;C:\PostgreSQL\8.3\include;C:\PostgreSQL\8.3\lib;C:\PostgreSQL\8.3\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

Lembre-se sempre de trocar os numeros de versão da Qt e do PostgreSql pelos numeros da versão que você esta utilizando.
Agora, no prompt do DOS digite:

cd C:\Qt\4.4.3\src\plugins\sqldrivers\psql
qmake -o Makefile "INCLUDEPATH+=C:\PostgreSQL\8.3\include" "LIBS+=C:\PostgreSQL\8.3\lib\libpq.lib" psql.pro 

E depois, digite:

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 é qsqlpsql4.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 PostgreSql, 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 PostgreSql, podem ser encontradas no diretório da instalação do PostgreSql, na minha maquina é:

PostgreSql:

C:\PostgreSQL\8.3\bin

As DLL's da Qt:

C:\Qt\4.5.0\bin

Os drivers da Qt para acesso ao PostgreSql:

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):

>Hierarquia de diretórios.

Abaixo, todos os arquivos e DLLs necessários distribuidos pelos diretórios:

>Hierarquia de 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_postgresql

17/11/2009  17:58              .
17/11/2009  17:58              ..
17/11/2009  17:48           130.048 cadastro.exe
13/04/2009  10:23            12.288 comerr32.dll
17/11/2009  17:54               593 config.txt
13/04/2009  10:23           135.168 gssapi32.dll
13/04/2009  10:23            19.968 k5sprt32.dll
13/04/2009  10:23           634.880 krb5_32.dll
13/04/2009  12:09         1.032.192 libeay32.dll
06/01/2009  12:51           968.886 libiconv-2.dll
06/01/2009  12:51            83.906 libintl-8.dll
08/09/2009  05:48           172.032 libpq.dll
10/01/2009  18:32            11.362 mingwm10.dll
08/04/2008  12:13           348.160 msvcr71.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
17/11/2009  17:52              sqldrivers
13/04/2009  12:09           212.992 ssleay32.dll
              16 arquivo(s)     18.089.771 bytes
               3 pasta(s) 16.276.557.824 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_postgresql\sqldrivers

17/11/2009  17:52              .
17/11/2009  17:52              ..
17/11/2009  13:40           116.224 qsqlpsql4.dll
               1 arquivo(s)        116.224 bytes
               2 pasta(s) 16.276.557.824 bytes disponíveis




Depois, você tem que configurar o PostgreSql no servidor para dar permissão de acesso a conexões vindas dos computadores da rede, os clientes.
No Windows® você pode usar o PgAdmin para isso, no linux é mais comum editar diretamente o arquivo /etc/postgresql/8.3/main/pg_hba.conf com o vi, no Windows® os usuários estão mais acostumados com ferramentas gráficas, mas também é possível editar o arquivo pg_hba.conf com um editor de texto, no Windows® ele se encontra no diretório C:\PostgreSQL\8.4\data.
Você deve colocar uma linha semelhante a esta, onde esta escrito 192.168.2.0/24 troque pelo endereço da sua rede:

host    all         all         192.168.2.0/24        ident sameuser

ou

host    all         all         192.168.2.0/24        md5



A diferença entre as duas é o tipo de autenticação que sera feita pelo servidor, leia a documentação do PostgreSql.

Abaixo, usando o PgAdmin para editar o arquivo C:\PostgreSQL\8.4\data\pg_hba.conf.(Clique na imagem para ampliar):

>PgAdmin.

>PgAdmin.

Se ocorrer algum problema de conexão, instale o PgAdmin na estação onde esta ocorrendo o problema e tente conectá-lo ao banco no servidor, o PgAdmin já vem com todas as DLLs clients do PostgreSql. Se for algum problema de libs ou DLLs não encontradas pelo seu aplicativo na estação, por exemplo, o aplicativo pode não conseguir carregar o driver, qsqlpsql4, devido a algum problema na libpq.dll, que é a principal, o "client" do PostgreSql, 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 analizando a qsqlpsql4 e suas dependências.(Clique na imagem para ampliar):

>Dependency Walker.

Pagina inicial



Comentários:


Nenum comentário

Deixe seu comentário:


 *
 *

 *
  Campos marcados com * são obrigatórios.