Crie o banco dados no MySQL. Vamos usar o mesmo banco usado em artigos anteriores. Este é o script de criação das tabelas:
create table cidade (id_cidade int not null primary key, nome varchar(30));
create table cliente (id_cliente int not null primary key, nome varchar(40), endereco varchar(40), id_cidade integer references cidade(id_cidade), telefone varchar(14), tipo char(1));
Usando SQLdb
Selecione a aba SQLdb e coloque no Data Module um TMySQL50Connection. Ele que fará a conexão com o banco. Defina então as seguintes propriedades:
DatabaseName - informe o nome do banco de dados que foi criado.
HostName - informe o nome ou o IP do servidor de banco de dados.
Name - informe um nome para a conexão. Por exemplo: dbCliente.
Password - informe a senha do usuário. Se usar root como nome de usuário, informe a senha definida no momento da instalação do MySQL.
UserName - informe o nome do usuário. Pode ser o root.
Coloque agora um TSQLTransaction e selecione dbCliente na propriedade Database, e na propriedade Name digite trCliente, por exemplo.
Volte ao TMySQL50Connection e informe trCliente na propriedade Transaction. Coloque a propriedade Connected em True para verificar se a conexão é feita. Se retornar uma mensagem de falta da dll libmySQL, localize a mesma no diretório bin do MySQL e copie-a para o diretório system32. Depois volte a propriedade para False.
Coloque um TSQLQuery no Data Module e defina suas propriedades:
Database - selecione dbCliente.
Name - defina queCidade.
SQL - informe SELECT * FROM CIDADE.
Transaction - selecione trCliente.
Coloque agora um TDataSource da aba Data Access e mude Name para dsCidade e em DataSet selecione queCidade.
No evento AfterPost de queCidade digite o código:
queCidade.ApplyUpdates;
trCliente.CommitRetaining;
No evento AfterDelete selecione o mesmo método para não repetir código.
Pronto. Está feita a configuração de acesso, tanto para leitura quanto para escrita, em uma tabela do MySQL. Crie uma interface seguindo os passos descritos no post Lazarus - Acessando banco de dados com SQLdb - Parte I.
Selecione o form principal e, no editor de código, digite abaixo de Implementation:
uses u_dmdados;
Localize o evento OnShow na aba Eventos do Inspetor de objetos. Dê um duplo clique à direita e digite:
dmDados.dbCliente.Open;
Assim, sempre que o programa for iniciado a conexão com o banco de dados será aberta.
Usando ZeosLib
Usaremos a versão 7.0 do ZeosLib disponível no grupo Lazarus-BR. Para instalar o pacote siga as instruções apresentadas no post Lazarus - Conectando PostgreSQL com ZeosLib. Coloque um TZConnection no Data Module. Defina as propriedades:
AutoCommit - deixe em True para que as transações no banco sejam comitadas automaticamente.
Database - informe o nome do banco de dados criado anteriormente.
HostName - informe o nome ou IP do servidor do banco. Para máquina local informe localhost.
Name - digite dbCliente.
Password - informe a senha do usuário. Em geral a senha do usuário root.
Protocol - informe mysql-5. Observe a versão do MySQL que você está usando.
User - informe o nome do usuário. Geralmente é root.
TransactionIsolation - define o nível de isolamento da transação. No nosso caso vamos usar tiReadCommitted.
Mude Connected para True. No Windows deve ocorrer um erro de ausência de dll. Faça o download aqui e copie-a para system32 do Windows. Depois de conectar com sucesso volte Connected para False.
Coloque um TZQuery e um TZUpdateSQL e configure-os como foi feito no artigo Lazarus - Conectando PostegreSQL com ZeosLib.
No TZUpdateSQL defina essas 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;
Coloque um TDataSource da aba Data Access e defina Name como dsCidade e em DataSet selecione a TZQuery anterior. Ai está. Agora crie a interface com nos posts anteriores.
Atualizado em 04/06/2010.
13 Comentários
como vc comentou no post.. A dll realmente não é compatível. Fiz uma aplicação aqui e tentei rodar no windows mobile 5.0 e ele dá uma mensagem de erro dizendo q a dll não foi encoontrada. Sabe como resolver esse problema??? Existe alguma dll pro mobile??
Agradeço imensamente e, se puder, me responda via e-mail mara.moura@gmail.com.
Att, Silvia
Já tentei configurações internacionais, decimalseparator:=','
Properties EditMask embaralha tudo.
Alguem ja passou por situação semelhante? Sabe como posso resolver este problema?
Minha configuração:
Lazarus version #:0.9.28.2 FPC Version:2.2.4 SVN Revision 22279
MySQL 5.0
ZeosLib 666
Meu e-mail:fbertoldo@dba.com.br
Att.
Fernando Bertoldo
Enviei resposta para o seu e-mail
Alexandre Krepe
alexandrekrepe@gmail.com
estou utilizando a versao 0.9.29 x86, meu SO eh o windows 7 x64 e utilizo o mysql 5.1.
Segui todos so seus procedimentos com a conexao utilizando o componente SQLdb porem sugiu o seguinte erro: Error: Project raised exception class 'External:SIGSEGV'.
Nao entendi pq daria este erro de memoria neste codigo. Agradeco a atencao.
Isso acontece quando você tenta usar um objeto que não existe mais. Existe a referência, mas não o objeto. Se você preferir mande um demo reproduzindo o erro. Posso tentar ajudar se tiver os fontes.
Estou com dificuldades em conectar via Zeos, utilizando Lazarus no Mac OS X.
O problema: ao tentar conectar em tempo de projeto, exibe já a mensagem:
None of the dynamic libraries can be found: libmysqlclient.so.15, libmysqlclient.so
Não sei se já teve experiência em sistema operacional OS x para poder tentar ajudar.
Qualquer ajuda é bem vinda.
Obrigado.
Não tenho experiência com OS x, mas sei que o Zeos precisa dessas libs pra acessar o banco de dados. Como você tem que instalá-las eu não sei :).
Teriamos que saber se as novas versões do MySQL são compatíveis com os componentes SQLdb ou Zeos (qual você está usando?). Isso eu realmente não tenho certeza. Mas o procedimento é esse, copiar as dlls necessárias para a pasta da aplicação ou do system, seja 32 ou 64 bits.
Obrigado e Parabens pelo blog