Você está na página 1de 5

LAZARUS CONCTANDO PGPOSTGRESQL COM ZEOSLIB

http://professorcarlos.blogspot.com/2010/03/lazarus-conectando-postgresql-com.html

Lazarus - Conectando PostgreSQL com ZeosLib


Neste artigo mostraremos como criar uma aplicação simples usando o conjunto de
componentes ZeosLib e o banco de dados PostgreSQL (PG). ZeosLib precisar ser baixado e
instalado. Depois de extrair os arquivos, inicie o Lazarus. Selecione no menu Package -> Open
package file (.lpk). Localize o diretório onde você extraiu o componente e selecione o
pacote zcomponent.lpk em \packages\lazarus. Na janela que abrir clique em Compile.
Aguarde finalizar e então clique em Install. Esse procedimento irá recompilar o Lazarus e
depois ele será reinicializado. Confira que uma nova aba foi adicionada na paleta de
componentes - Zeos Access.
Com relação ao banco de dados, você pode baixá-lo no site oficial. A instalação é muito
simples, inclusive no Ubuntu. No Windows localize libpq.dll no diretório de instalação do PG
e copie-a para o diretório System32 - procedimento necessário para o funcionamento do Zeos
com PG.
Agora que está tudo instalado, no PG, crie um novo banco de dados - chame-o de clientes - e
as tabelas necessárias para o nosso exemplo:

create table cidade (id_cidade integer primary key, nome varchar(30));

create table cliente (id_cliente integer primary key, nome varchar(40), endereco varchar(40),
id_cidade integer references cidade(id_cidade), telefone varchar(14), tipo char(1), status
boolean);

Vamos criar uma aplicação semelhante àquela que criamos nos posts em Lazarus -
Acessando banco de dados com SQLdb - Parte I e Parte II. Como a interface é a mesma,
vamos descrever apenas a criação do Data Module.
Inicie o Lazaus, crie uma nova aplicação e adicione um Data Module ao programa.
Defina Name como dmDados. É no Data Module que tudo irá acontecer daqui em diante.

TZConnection

Esse componente é reponsável por criar uma conexão com o banco de dados e controlar as
transações. Veremos que ele possui propriedades que permitem que seja configurado para se
conectar a vários bancos de dados: PostgreSQL, Firebird, Oracle, SQLite e outros. Coloque um
desses no Data Module. As seguintes propriedades merecem um melhor entendimento:

AutoCommit - determina de que forma as alterações são confirmadas no banco de dados. Se


deixar em True as alterações são confirmadas implicitamente. Caso se deseje confirmar
explicitamente devemos mudar para False. No nosso caso deixemos em True.
Connected - estabelece uma conexão com o banco. Durante o desenvolvimento, se for
necessário, coloque em True. Mas lembre de voltar para False antes de finalizar o projeto.
Database - define o nome do banco de dados. Digite clientes. Se estiver usando o Firebird ou
SQLite você deve informar o caminho completo do arquivo do banco de dados.
HostName - informa o nome ou IP do servidor de banco de dados. Se for a máquina local
atribua o nome localhost.
Name - informe dbCliente.
Password - informar a senha do servidor de banco de dados. Informe a senha do usuário
definida durante a instalação do PG.
Protocol - define qual o banco de dados que será conectado. Informe postgresql-8 ou o que for
adequado ao banco usado.
TransactionIsolation - define o nível de isolamento da transação. No nosso caso vamos
usar tiReadCommitted.
User - define o nome do usuário do banco de dados. Informe o usuário criado durante a
instalação do PG.

Para fazer um teste da conexão, mude a propriedade Connected para True. Se estiver tudo


certo não deve acontecer erro.

TZUpdateSQL

Especifica os comandos SQL de atualização - INSERT, UPDATE e DELETE. Atua em conjunto


com um TZQuery. Inclua um componente desse no Data Module e defina suas propriedades
assim:

DeleteSQL - DELETE FROM CIDADE WHERE ID_CIDADE = :OLD_ID_CIDADE;


InsertSQL - INSERT INTO CIDADE VALUES (:ID_CIDADE, :NOME);
ModifySQL - UPDATE CIDADE SET NOME = :NOME WHERE ID_CIDADE =
:OLD_ID_CIDADE;
Para informar os comandos clique na propriedade correspondente do Inspetor de Objetos.
Digite o comando no editor e tecle OK.

Name - defina como upCidade.


Qualquer identificador precedido por dois pontos (:) é um parâmetro que será definido quando o
comando for executado. O prefixo OLD possibilita o acesso ao valor do campo antes dele ser
modificado.

TZQuery

Query que deve ser usada para atualizar dados em tabelas. É usada em


conjunto TZUpdateSQL para que execute as operações de INSERT, UPDATE ou DELETE.
Para cada tabela do banco deveremos ter um desses componentes no Data Module. Inclua
uma TZQuery no Data Module e vamos alterar suas propriedades:

Connection - especifica o objeto TZConnection. Selecione dbCliente.


Name - queCidade.
SQL - especifica um comando SELECT para mostrar os dados da tabela. Informe: SELECT *
FROM CIDADE.
UpdateObject - define o objeto TZUpdateSQL que será usado em conjunto com TZQuery.
Selecione upCidade.

Para finalizar o desenho do acesso à tabela Cidade, coloque um TDataSource da aba Data


Access. Defina Name como dsCidade e DataSet como queCidade.
Com exceção de TZConnection - que deve ser apenas um - repita o processo para definir o
acesso à tabela Cliente. O Data Module deverá ter esse aspecto:
Não é necessário incluir todo aquele código no evento AfterPost das TZQueries. Isso é feito
automaticamente pois a propriedade AutoCommit de TZConnection está definida como True.
A partir de agora o programa é exatamente igual ao que foi criado em Lazarus - Acessando
banco de dados com SQLdb - Parte I e Parte II. Siga os mesmos passos desses posts. Bem,
uma pequena modificação se faz necessária. Nos
eventos OnShow e OnClose de frmPrincipal na aplicação anterior nós incluimos códigos para
abrir e fechar a conexão. Diferente do SQLdb, no Zeos, o comando para abrir a conexão será:

dmDados.dbCliente.Connect;

e para encerrar:

dmDados.dbCliente.Disconnect;

Qualquer dúvida na criação dessa aplicação, podem me escrever ou deixar um comentário.


Terei o maior prazer em ajudar.
Postado por Professor Carlosàs 16:27
Marcadores: PostgreSQL, ZeosLib
Posts Relacionados

 Lazarus – Herança de form e criação de componentes em run-time

 Lazarus - Relatório Mestre detalhe com LazReport

 Lazarus - Conectando Oracle com SQLdb ou ZeosLib

 Lazarus - AutoCommit no ZeosLib com PostgreSQL

 Lazarus - Conectando PostgreSQL com ZeosLib

 Lazarus - Usando Dicionários de Dados

7 comentários:

ximenes disse...

Profesor parabens, cada vez que você atualiza seu blog fico impressionado com o
tamanho do seu conhecimento, nao é querendo lhe bajular, gosto muito dos seus
poster e fico filiz de lhe seguir na blogosfera.
_____________________________________
http://wximenes.blogspot.com/

6:44 PM

Anônimo disse...

Profesor parabens, cada vez que você atualiza seu blog fico impressionado com o
tamanho do seu conhecimento, nao é querendo lhe bajular, gosto muito dos seus
poster e fico filiz de lhe seguir na blogosfera.
_____________________________________
http://wximenes.blogspot.com/

6:44 PM

ojuaran disse...

Querido Professor
Por favor crie curso de lazarus em dvd, com diversos níveis, e venda-os. Estamos
necessitando de fonte didática sobre o lazarus. Ou até mesmo livros sobre o
assunto pois nada há no mercado. ojuaran@gmail.com--Muito obrigado

8:42 AM

Anônimo disse...

Boa tarde Professor, me chamo Fabrício sou universitário do curso de Analise de


Sistemas, estou fazendo um projeto em lazarus e estou com muitas dificuldades
por não achar material disponível, gostaria de sua ajuda se for possível, por onde
começo a estudar? pelo Free Pascal? posso usar uma apostila de Delphi como
base? estou meio sem rumo aguardo seu retorno professor, obrigado.

Fabrício - Goiânia - GO

3:10 PM

Professor Carlos disse...

Fabrício
Aqui no blog tem muitos artigos para quem está começando no Lazarus. Desde
criação de menus, barra de ferramentas e de status e acesso a bancos de dados.
Mas pode usar uma apostila de Delphi sim. Tem muita coisa parecida. Aqui você
encontra a documentação completa do Free Pascal:
ftp://ftp.freepascal.org/pub/fpc/docs-pdf/

3:58 PM

Unknown disse...

Prezado Professor, estou iniciando no Lazarus x PostgreSql 9.0.3 no Ubuntu


10.04 e está sendo bastante interessante. Estou com uma situação complicada e
não estou conseguindo sair do outro lado!
Estou utilizando o PQConnection1, SqlTransation e TSqlQuery, executo a query
mas na hora de incluir ou alterar qualquer informação simplesmente não estou
conseguindo sucesso. Poderia me ajudar, grato,

2:55 PM

Professor Carlos disse...

José Maria

Você pode ser mais claro sobre o que significa não estar conseguindo sucesso?
Dá erro? Que erro? Não consegue gravar no banco?

6:17 PM

Postar um comentário

Você também pode gostar