Fórum Transações no Dbexpress #273369
21/03/2005
0
Venho desenvolvendo meus sistemas usando principalmente os componentes IB para manipulação de dados, lembrando que sempre usando Interbase e Firebird mas a minha dúvida é: qual a melhor maneira de se trabalhar com transações no DBexpress, afinal estou terminando um sistema que desenvolvi usando DBexpress mas na hora de implementar um controle de transação mais complexo, acho que ele deixa um pouco a desejar ou seja sem rodeios, o que faço no IB com poucas linhas de código no dbexpress torna-se uma tarefa bem mais complicada.
Rogerio Amorim
Rogerio Amorim
Rogerio_amorim
Curtir tópico
+ 0
Responder
Posts
21/03/2005
Faelcavalcanti
No básico e simples faria assim:
Os objetos [b:18f14d6396]TTransactionDesc[/b:18f14d6396], você poderia utilizar algum já criado, mas no caso seria recomendável setar para [b:18f14d6396]xilREADCOMMITTED[/b:18f14d6396]. Já no caso do [b:18f14d6396]SQLConnectionDefault[/b:18f14d6396] vale o mesmo, pois depende das configurações do banco.
Acho que este simples exemplo já fica legal para implementar no código, você poderia fazer até uma procedure padrão já com tratamento de transação, tipow sempre que eu quiser fazer qualquer tipow de tratamento você passaria as SQL´s, os parâmetros, e outros. Existem várias formas de poder facilitar no desenvolvimento.
Agora se você achar que ficou um pouco lento, vai depender de uma porção de coisas, tipow rede, configuração de banco, configuração da conexão, velocidade do servidor e da máquina cliente, e nível de transação e .... é coisa que não acaba mais aí só você chamando o Inspetor Bugiganga. :lol: :lol: :lol: Brincadeira!!! Mais é meio chato já sofri com isto também.
Existem inúmeros tópicos abordados sobre transação é só conferir em [url=http://forum.clubedelphi.net/search.php]pesquisar[/url], vai lá e pimba. Qualquer coisa posta tuas dúvidas mais específicas aqui.
:wink:
Falow!
Procedure ProcedimentoSimples; const c_SQL_Tabela : String = ´DELETE * FROM TABELA´; var Qry_Aux : TSQLQuery; begin // instancia o objeto TSQLQuery em run-time Qry_Aux := TSQLQuery.Create(Nil); Qry_Aux.SQLConnection := SQLConnectionDefault; // verifica se está em transação, caso não inicializará if SQLConnectionDefault.InTransaction then SQLConnectionDefault.StartTransaction(TTransactionDesc); try try Qry_Aux.SQL.Add(c_SQL_Tabela); Qry_Aux.ExecSQL; // vários outros procedimentos aqui // ...... // salva tudo e atualiza no banco SQLConnectionDefault.Commit(TTransactionDesc); except // caso ocorra algum erro executar o seguinte código abaixo do e: exception begin SQLConnectionDefault.Roolback(TTransactionDesc); ShowMessage(´Ocorreu um erro: + #13 + e.Message); end; finally Qry_Aux.Free; // aqui sempre será executado end; end;
Os objetos [b:18f14d6396]TTransactionDesc[/b:18f14d6396], você poderia utilizar algum já criado, mas no caso seria recomendável setar para [b:18f14d6396]xilREADCOMMITTED[/b:18f14d6396]. Já no caso do [b:18f14d6396]SQLConnectionDefault[/b:18f14d6396] vale o mesmo, pois depende das configurações do banco.
Acho que este simples exemplo já fica legal para implementar no código, você poderia fazer até uma procedure padrão já com tratamento de transação, tipow sempre que eu quiser fazer qualquer tipow de tratamento você passaria as SQL´s, os parâmetros, e outros. Existem várias formas de poder facilitar no desenvolvimento.
afinal estou terminando um sistema que desenvolvi usando DBexpress mas na hora de implementar um controle de transação mais complexo, acho que ele deixa um pouco a desejar ou seja sem rodeios
Agora se você achar que ficou um pouco lento, vai depender de uma porção de coisas, tipow rede, configuração de banco, configuração da conexão, velocidade do servidor e da máquina cliente, e nível de transação e .... é coisa que não acaba mais aí só você chamando o Inspetor Bugiganga. :lol: :lol: :lol: Brincadeira!!! Mais é meio chato já sofri com isto também.
Existem inúmeros tópicos abordados sobre transação é só conferir em [url=http://forum.clubedelphi.net/search.php]pesquisar[/url], vai lá e pimba. Qualquer coisa posta tuas dúvidas mais específicas aqui.
:wink:
Falow!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)