[RESOLVIDO]Fechar Conexão de um DataReader retornado em uma função
4 respostas
A
aboult
Pessoal, boa tarde.
Eu estou trabalhando com um web service e tenho uma classe que se comunica com meu banco de dados.
Eu tenho a função abaixo que faz um retorno de um DataReader que eu utilizo nos métodos de meu web service.
Como eu poderia fechar as conexões deixadas por eles?
Eu já tentei utilizar Using, utilizar o Finally.
Mas não dá certo, pois como eu faço o retorno do DataReader se eu fechar a conexão eu não consigo utilizá-lo no método do web service.
PublicSharedFunctionexecSelect(ByValtabelaAsString,ByValcamposAsString,ByValcondicaoAsString)AsSqlClient.SqlDataReaderDimcommAsSystem.Data.SqlClient.SqlCommandDimmyReaderAsData.SqlClient.SqlDataReader=NothingDimcomandoAsStringcomando="SELECT "&campos&" FROM "&tabela&IIf(condicao<>""," WHERE "&condicao,"")comm=NewSqlClient.SqlCommand(comando,ConectaBanco)TrymyReader=comm.ExecuteReader()CatchexAsExceptionmyReader=NothingReturnNothingEndTryIfmyReader.Read()ThenReturnmyReaderElsemyReader.Close()ReturnNothingEndIfEndFunction
Opa, aboult, beleza?
Já pensou na ideia de retornar uma coleção com os dados de seu DataReader?
Se você fecha a conexão a qual o DataReader está atrelado, você perde a “ligação” dele com o banco de dados.
Porque não, ao invés de retornar um DataReader, você não retorna uma coleção de dados?
Eu, particularmente, faço isso!
Espero ter ajudado,
fique com Deus!
A
aboult
Nicolas Fernandes:
Opa, aboult, beleza?
Já pensou na ideia de retornar uma coleção com os dados de seu DataReader?
Se você fecha a conexão a qual o DataReader está atrelado, você perde a “ligação” dele com o banco de dados.
Porque não, ao invés de retornar um DataReader, você não retorna uma coleção de dados?
Eu, particularmente, faço isso!
Espero ter ajudado,
fique com Deus! :D
É acabei resolvendo no mesmo dia dessa forma, só consegui fazer dessa maneira.
Obrigado pela atenção.
N
Nicolas_Fernandes
aboult:
Nicolas Fernandes:
Opa, aboult, beleza?
Já pensou na ideia de retornar uma coleção com os dados de seu DataReader?
Se você fecha a conexão a qual o DataReader está atrelado, você perde a “ligação” dele com o banco de dados.
Porque não, ao invés de retornar um DataReader, você não retorna uma coleção de dados?
Eu, particularmente, faço isso!
Espero ter ajudado,
fique com Deus! :D
É acabei resolvendo no mesmo dia dessa forma, só consegui fazer dessa maneira.
Obrigado pela atenção.
Concorda que, retornando um DataReader para as camadas superiores, seu sistema fica MUITO acoplado e nada coeso? Quem tem a responsabilidade de trabalhar com o acesso a dados é a camada ADO, DAO ou seja lá como você conhece. Se você retorna seu DataReader para as camadas acima, você acaba acoplando o seu sistema. Suas classes superiores, ao trabalharem também com o DataReader, também não fica coesas. Think about it.
Coloque a tag [RESOLVIDO] no seu tópico.
Fique com Deus!
A
aboult
Obrigado pela atenção.[/quote]
Concorda que, retornando um DataReader para as camadas superiores, seu sistema fica MUITO acoplado e nada coeso? Quem tem a responsabilidade de trabalhar com o acesso a dados é a camada ADO, DAO ou seja lá como você conhece. Se você retorna seu DataReader para as camadas acima, você acaba acoplando o seu sistema. Suas classes superiores, ao trabalharem também com o DataReader, também não fica coesas. Think about it.
Coloque a tag [RESOLVIDO] no seu tópico.
Fique com Deus![/quote]
É tem toda razão, o sistema ficava todo preso e eu não conseguia controlar a conexão corretamente.
Com isso eu estava estourando o MaxPoolSize.