none
Não cosigo desconectar retornando DataReader RRS feed

  • Pergunta

  • Olá Pessoal,

    Quando temos um método que retorna um datareader, onde devemos desconectar do banco e fazer o close(); do data reader?

    Se eu coloco antes do return e gera um erro na chamada do método dizendo que o objeto está fechado.

    public SqlDataReader GetMenu()

    {

         StringBuilder strSQL = new StringBuilder();

         strSQL.Append("SELECT id, descricao, id_superior, ativo ");

         strSQL.Append("FROM REGISTRO_MENU ");

         strSQL.Append("WHERE ATIVO = 'True'");

         SqlCommand cmd = new SqlCommand(strSQL.ToString(), conn);

         cmd.CommandType = CommandType.Text;

         SqlDataReader dr;

         Conecta();

         dr = cmd.ExecuteReader();

         dr.Read();

         return dr;

         Desconecta();

         dr.Close();

         dr.Dispose();

    }

    sexta-feira, 8 de dezembro de 2006 22:32

Todas as Respostas

  • Qual o código da sua função Conecta() e Desconecta() ???
    terça-feira, 12 de dezembro de 2006 18:26
  • Olá!

      Cara, no método ExecuteReader() coloque: ExecuteReader(CommandBehavior.CloseConnection);

    Aih, no método que receber o reader que vc está retornando, utilize os dados dele e depois o feche .. oReader.Close();

    ou ainda utilize assim

    ...

    using( SqlDataReader oReader = GetMenu() ){

        ... utilize o reader pra preencher seu objeto

    }

    ele dará o dispose do seu reader quando sair do using, assim fechando o mesmo, que irá fechar a conexão tb!!

     

    Abraço!

     

    quarta-feira, 20 de dezembro de 2006 13:47
  • Vamos lá, raciocinem comigo:

     

       Conecta();

         dr = cmd.ExecuteReader();

         dr.Read();

         return dr;

         Desconecta();

         dr.Close();

         dr.Dispose();

     

    1-Se você executou return dr, o que adianta colocar código depois disso, se esse código nunca será executado?

    2-DataReader SEMPRE trabalha conectado. Se você fecha a conexão, ele morre. Que trabalhar desconectado? Use datasets ou algum framework de persistência.

     

     

    terça-feira, 23 de janeiro de 2007 01:34