DBExress MySQL aumentando o número de conexões no banco.

26/05/2008

1

Estou usando o Delphi 2007 com DBExpress para conectar no banco de dados MySQL 5.

TSQLConnection -> TSQLQuery -> TDataSetProvider -> TClientDataSet -> TDataSource.

Cadavez que eu executo um ´ExecSQL();´ no banco de dados vai aumentando o número de conexões. Já tentei dar um ´Free´ mas não deu certo. Só dá pra fechar as coneões quando fecho a aplicação. Gostaria de uma solução melhor que esta. Se alguem já passou por algo parecido, por favor preciso de uma luz.

Procedure TForm_Senha.GravaDados;
Var
SQL_Update : TSQLQuery;
Begin
SQL_Update := TSQLQuery.Create(Self);

Try
SQL_Update.SQLConnection := Dm_Ponto.SQLPonto;
SQL_Update.SQL.Clear;
SQL_Update.SQL.Add(´UPDATE FUNCIONA_DBF ´);
SQL_Update.SQL.Add(´ SET STATFUNC = :STATFUNC, ´);
SQL_Update.SQL.Add(´ DTPONTO = :DTPONTO, ´);
SQL_Update.SQL.Add(´ HRPONTO = :HRPONTO, ´);
SQL_Update.SQL.Add(´ TIPOSAID = :TIPOSAID ´);
SQL_Update.SQL.Add(´ WHERE CODIFUNC = :CODIFUNC ´);
SQL_Update.ParamByName(´DTPONTO´).AsDate := DATE;
SQL_Update.ParamByName(´HRPONTO´).Value := TimeToStr(Time());
SQL_Update.ParamByName(´CODIFUNC´).Value := Dm_Ponto.SQLQryFunciona.FieldByName(´CODIFUNC´).Value;

SQL_Update.ExecSQL();
Finally
SQL_Update.Close;
SQL_Update.Free;
End;

Tirei algumas coisas do código mas o principal ta ai


Responder

Posts

26/05/2008

Alex Maia

Estou com este mesmo problema. Participo de um grupo de n-tier e há umas duas semanas houve um debate muito grande entre os participantes falando sobre o dbx4 com mysql. Muitos falaram de vantagens e desvantagens, porém não conseguiram resolver este problema. Fiz até um exemplo mostrando como ocorre este problema.

Deste grupo participam pessoas que fizeram muita propaganda sobre o dbx4 do delphi 2007, mas nem eles responderam.

Eu tenho um sistema que funciona bem com delphi 7 e mysql 4.0.xxx e no momento estou migrando.

Qualquer coisa vc manda mensagem pra trocarmos idéias sobre estes problemas.

flw


Responder

26/05/2008

Hayashi

Então... fiquei até emocionado agora. Ainda bem que não sou o único que tem esse problema. Vou tentar contornar esse Bug mas um pouco, migrar tudo agora vai ser complicado.

Será que alguém já fez uma ´POG´ pra tentar passar por esse problema???


Responder
Estou usando o Delphi 2007 com DBExpress para conectar no banco de dados MySQL 5. TSQLConnection -> TSQLQuery -> TDataSetProvider -> TClientDataSet -> TDataSource. Cadavez que eu executo um ´ExecSQL();´ no banco de dados vai aumentando o número de conexões. Já tentei dar um ´Free´ mas não deu certo. Só dá pra fechar as coneões quando fecho a aplicação. Gostaria de uma solução melhor que esta. Se alguem já passou por algo parecido, por favor preciso de uma luz. Procedure TForm_Senha.GravaDados; Var SQL_Update : TSQLQuery; Begin SQL_Update := TSQLQuery.Create(Self); Try SQL_Update.SQLConnection := Dm_Ponto.SQLPonto; SQL_Update.SQL.Clear; SQL_Update.SQL.Add(´UPDATE FUNCIONA_DBF ´); SQL_Update.SQL.Add(´ SET STATFUNC = :STATFUNC, ´); SQL_Update.SQL.Add(´ DTPONTO = :DTPONTO, ´); SQL_Update.SQL.Add(´ HRPONTO = :HRPONTO, ´); SQL_Update.SQL.Add(´ TIPOSAID = :TIPOSAID ´); SQL_Update.SQL.Add(´ WHERE CODIFUNC = :CODIFUNC ´); SQL_Update.ParamByName(´DTPONTO´).AsDate := DATE; SQL_Update.ParamByName(´HRPONTO´).Value := TimeToStr(Time()); SQL_Update.ParamByName(´CODIFUNC´).Value := Dm_Ponto.SQLQryFunciona.FieldByName(´CODIFUNC´).Value; SQL_Update.ExecSQL(); Finally SQL_Update.Close; SQL_Update.Free; End; Tirei algumas coisas do código mas o principal ta ai


você está dizendo que abre o sistema e, se executar esse código três vezes na mesma instância do sistema, serão abertas três conexões com o banco de dados? é isso?
não será problema no driver de conexão?
eu trabalhava com o driver dbx nativo para o sqlserver. tive que trocar pelo da CoreLab, pois o da Borland tinha vários problemas ao trabalhar com transações.


Responder

27/05/2008

Hayashi

Era isso mesmo que o Emerson disse.

Atualizei a para os drivers da CoreLab e resolveu o problema.

Muito obrigado.


Responder

27/05/2008

Alex Maia

Vc poderia envir para mim estes drivers?
Meu msn é tapajosc@msn.com

Desde já agradeço.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira