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.
Comentários
_____________________________________
http://wximenes.blogspot.com/
_____________________________________
http://wximenes.blogspot.com/
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
Fabrício - Goiânia - GO
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/
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,
Você pode ser mais claro sobre o que significa não estar conseguindo sucesso? Dá erro? Que erro? Não consegue gravar no banco?