TFDJSONDataSetsWriter liberando a TFDQuery e TFDConnection
Pessoal quando adicionamos um Query dentro reflection do Json e depois tentamos dar um free nos objetos necessários para a consulta, não funciona, pois Query fca presa no metodo de adição, minha dúvia é como liberar essa query, sem afetar ListAdd ?
Código
TFDJSONDataSetsWriter.ListAdd(Result, sObjQry);
Código
TFDJSONDataSetsWriter.ListAdd(Result, sObjQry);
Eduardo Junqueira
Curtidas 0
Melhor post
Jair Sakai.
07/12/2015
function TPesquisarDao.lerFDJSON(pFiltro: string): TFDJSONDataSets;
begin
qry1 := TFDQuery.Create(nil);
qry1.Connection := conn;
Result := TFDJSONDataSets.Create;
try
qry1.Active := false;
qry1.SQL.Text := pFiltro;
TFDJSONDataSetsWriter.ListAdd(Result, qry1);
finally
//qry1.Close; // nao pode destruir porque ta fazendo reflection lasco !!
//FreeAndNil(qry1); // vai dar vazamento de memoria se nao destruir
end;
end;
begin
qry1 := TFDQuery.Create(nil);
qry1.Connection := conn;
Result := TFDJSONDataSets.Create;
try
qry1.Active := false;
qry1.SQL.Text := pFiltro;
TFDJSONDataSetsWriter.ListAdd(Result, qry1);
finally
//qry1.Close; // nao pode destruir porque ta fazendo reflection lasco !!
//FreeAndNil(qry1); // vai dar vazamento de memoria se nao destruir
end;
end;
GOSTEI 1
Mais Respostas
Jair Sakai.
09/02/2015
Eduardo, como vc resolveu esse problema, também estou nesse impasse.
GOSTEI 0
Rondinele
09/02/2015
Bom dia, como foi resolvido?
GOSTEI 0
Eduardo Junqueira
09/02/2015
Mudei para Xdata da TMS e parei de usar datasnap, essa foi soluçã
GOSTEI 0
Nelson Santos
09/02/2015
Recomendo no lado cliente, colocar um chamada a um método que no servidor feche a query. E também pode ser feito algo que periodicamente feche essas querys abertas, isso por ser feito antes de abrir as mesmas, já que para cada sessão há um modulo aberto em separado em memória, não afetando os demais.
GOSTEI 0
Júlio Ferreira
09/02/2015
Caro amigo,
Exatamente como no seu exemplo, o que está escrito é a forma correta de usar o TFDJSONDataSetsWriter. Não precisa finalizar os objetos no lado servidor. A própria implementação da classe TFDJSONDataSetsWriter faz esse trabalho, depois que o cliente deixa de usar o objeto solicitado.
Além disso, sem contar, o LifeCycle do server tbm faz semelhante trabalho. Apenas se você configurou seu server pra Server, invocation ou session sempre irão destruir todos os objetos após o término da "sessão.
Exatamente como no seu exemplo, o que está escrito é a forma correta de usar o TFDJSONDataSetsWriter. Não precisa finalizar os objetos no lado servidor. A própria implementação da classe TFDJSONDataSetsWriter faz esse trabalho, depois que o cliente deixa de usar o objeto solicitado.
Além disso, sem contar, o LifeCycle do server tbm faz semelhante trabalho. Apenas se você configurou seu server pra Server, invocation ou session sempre irão destruir todos os objetos após o término da "sessão.
GOSTEI 1