Escolar Documentos
Profissional Documentos
Cultura Documentos
Colégio Politécnico
Curso Técnico em Informática
Delphi e MySQL
O Delphi proporciona uma interface comum para tratar vários banco de dados a
partir dos componentes Borland® dbExpress.
7 Teste a conexão.
Clique neste ícone para testar a conexão
Transações são métodos adotados nos banco de dados Cliente/Servidor para garantir a integridade
dos dados alterados no banco.
Suponha que seja necessário corrigir uma folha de pagamento de uma empresa, na qual os
registros precisam passar por muitas validações e devem ser confirmados ou abandonados todos
de uma vez, fazendo sucessivas alterações em duas ou mais tabelas. E se no meio do processo
ocorre algum erro? Algumas tabelas terão seus dados gravados, e outras não, tornando os resultdos
da operação não confiáveis, com informações incorretas. É neste ponto que entram as transações.
Quando se inicia uma transação no banco, o servidor faz cache em memória de todos os registro
das tabelas que estão sendo atualizados/apagados. Os dados só são permanentemente gravados no
banco, quando a transação se completa com sucesso (como comando Commit). Caso algum erro
venha a ocorrer no meio da transação, todos os dados são abandonados, retornando as tbelas ao
modo como estavam ants, sem perda de dados, corrupção ou erros nas tabelas.
Os recursos de transação não existe em bancos Desktop, apenas em bancos Cliente/Servidor, e tem
a função principal de manter a integridade e segurança dos dados, principalmente onde existem
muitos clientes acessando as mesmas informações ao mesmo tempo.
2. Implementando com dbExpress
No exemplo corrente, utiliza-se o conceito de transação não apenas para incluir, alterar ou excluir
dados da tabela, mas também para realizar as consultas. Quando uma transação é aberta para
realizar uma consulta, de modo que sempre seja possível ter certeza que os dados retornados são
os mais atuais, independente se outros clientes estão alterando ou excluindo o registro pesquisado.
Para finalizar uma transação gravando os dados no banco é utilizado o comando Commit, e para
desfazer as alterações, sem gravar as informações, é utilizado o comando Rollback.
Para utilizar corretamente as transações neste exemplo é necessário declarar uma variável, no
inicio da unit:
Var
Form1 : Tform1;
Transacao : TtransactionDesc;
Implementation
(...)
2. Implementando com dbExpress
A TtransactionDesc é uma estrutura (record) que define a transação. Um ponteiro dessa estrutura é
passado cada vez que se inicia, finaliza ou se cancela uma transação. Esta estrutura está definida
na biblioteca DBXpress.
Propriedades do ListView:
RowSelect = True
ViewStyle = vsReport
Clique duas vezes no Listview e inclua uma coluna com as seguinte propriedades:
Caption = Nome
t ry
Tra n s a ca o.Tra n s a ct ion ID:= 1 ;
Tra n s a ca o.Is o la t ion Le ve l:= xilREPEATABLEREAD;
d m Prin c ip a l.Da t a Mod u le 1 .Em p lo ye e Co n n e ct ion .St a rt Tra n s a ct ion (t ra n s a c a o );
d m Prin c ip a l.Da t a Mod u le 1 .SQLQu e ry1 .clo s e ;
d m Prin c ip a l.Da t a Mod u le 1 .SQLQu e ry1 .SQL.cle a r;
d m Prin c ip a l.Da t a Mod u le 1 .SQLQu e ry1 .SQL.Ap p e n d (c on s u lt a );
d m Prin c ip a l.Da t a Mod u le 1 .SQLQu e ry1 .Op e n ;
d m Prin c ip a l.Da t a Mod u le 1 .Em p lo ye e Co n n e ct ion .Co m m it (t ra n s a c a o );
e x ce p t
o n Exc :Exce p t io n d o
b e g in
Sh o wMe s s a g e ('Oc orre u u m e rro n a co n s u lt a : ' + Exc .Me s s a g e );
d m Prin c ip a l.Da t a Mo d u le 1 .Em p lo ye e Co n n e ct io n .Ro llb a ck(t ra n s a ca o);
e nd;
e nd;
Ca rre g a Lis t a ;
e nd;
e nd;
2. Implementando com dbExpress
5 Acrescente o seguinte método à classe TForm1 no editor de códigos:
p ro c e d u re TFo rm 1 .Ca rre g a Lis t a ;
v ar
list It em : TList It em ;
begin
dm Principal.Dat aModule1.SQLQuery 1.First ;
List View 1.It em s.Clear;
end;
2. Implementando com dbExpress
6 Dê um duplo clique no botão Incluir, e no editor de códigos digite:
procedure TForm 1.bt IncluirClick(Sender: TObject );
begin
t ry
Transacao.Transact ionID:= 1;
Transacao.Isolat ionLevel:= x ilREPEATABLEREAD;
dm Principal.Dat aModule1.Em ploy eeConnect ion.St art Transact ion(t ransacao);
dm Principal.Dat aModule1.SQLDat aSet 1.close;
dm Principal.Dat aModule1.SQLDat aSet 1.Com m andType:= ct Query;
dm Principal.Dat aModule1.SQLDat aSet 1.Com m andText :=
'insert int o em pregado (nom e) values(:nom eEm p)';
dm Principal.Dat aModule1.SQLDat aSet 1.Param By Nam e('nom eEm p').AsSt ring:= edt Nom e.t ex t ;
dm Principal.Dat aModule1.SQLDat aSet 1.ExecSQL;
dm Principal.Dat aModule1.Em ploy eeConnect ion.Com m it (t ransacao);
ex cept
on Exc:Except ion do
begin
Show Message(' Ocorreu um erro na t ent at iva de inclusao do regist o : ' + Ex c.Message);
dm Principal.Dat aModule1.Em ploy eeConnect ion.Rollback(t ransacao);
end;
end;
end;
2. Implementando com dbExpress
7 Experimente terminar a implementação adicionando código para os temais botões.