Usuário com melhor resposta
Classe de Acesso

Pergunta
-
Olá,
Tenho uma aplicação com problemas no pool de conexões. Consultando sites , vi que a maioria deles sugerem o uso do "using " nas classes de acesso a banco de dados. Problema : eu já utilizava em todos os "SqlCommand" , "SqlDataAdapter. Porém , tenho um classe isolada de acesso :
public class AcessoDll
{
public SqlConnection oconexao = null;
public void CriaConexao(String conn)
{
oconexao = new SqlConnection(conn);
if (oconexao.State == 0)
{
oconexao.Open();
}
}
}Acontece que se eu colocar o "using" na linha "oconexao = new SqlConnection(conn)" , tenho retorno de msg de conexao fechada , no proximo metodo de login :
using (SqlCommand ocomando = new SqlCommand(sb.ToString(), oconexao))
{...
SqlDataReader dr;
dr = ocomando.ExecuteReader(CommandBehavior.CloseConnection);
dr.Read();
if (dr.HasRows).............................. NÃO CONSIGO ENTENDER O PORQUÊ ??????
Respostas
-
Se voce está colocando o using nesa parte
... using(oconexao = new SqlConnection(conn)){ if (oconexao.State == 0) { oconexao.Open(); } } ...
Quando "passar" o código do bloco using, ele vai fechar a conexão e dar um dipose!
Por isso voce está recebendo esta mensagem.
o que pode ser feito é:
private string connectionString = "...."; public SqlConnection CriaConexao() { var __conn = new SqlConnection(connectionString); if (oconexao.State == ConnectionState.Closed) { __conn.Open(); } return _conn; }
e então
using(SqlConnection oconexao = CriaConexao()) using (SqlCommand ocomando = new SqlCommand(sb.ToString(), oconexao)) { ... SqlDataReader dr; dr = ocomando.ExecuteReader(CommandBehavior.CloseConnection); if (dr.HasRows) dr.Read();
Até mais!
Se for útil marque como resposta (:
- Editado Willian Arsenio sexta-feira, 31 de agosto de 2012 19:30
- Marcado como Resposta ZoroButtowi sexta-feira, 31 de agosto de 2012 21:04
Todas as Respostas
-
Se voce está colocando o using nesa parte
... using(oconexao = new SqlConnection(conn)){ if (oconexao.State == 0) { oconexao.Open(); } } ...
Quando "passar" o código do bloco using, ele vai fechar a conexão e dar um dipose!
Por isso voce está recebendo esta mensagem.
o que pode ser feito é:
private string connectionString = "...."; public SqlConnection CriaConexao() { var __conn = new SqlConnection(connectionString); if (oconexao.State == ConnectionState.Closed) { __conn.Open(); } return _conn; }
e então
using(SqlConnection oconexao = CriaConexao()) using (SqlCommand ocomando = new SqlCommand(sb.ToString(), oconexao)) { ... SqlDataReader dr; dr = ocomando.ExecuteReader(CommandBehavior.CloseConnection); if (dr.HasRows) dr.Read();
Até mais!
Se for útil marque como resposta (:
- Editado Willian Arsenio sexta-feira, 31 de agosto de 2012 19:30
- Marcado como Resposta ZoroButtowi sexta-feira, 31 de agosto de 2012 21:04
-
-