Array
(
)

DataReader

André Andrade
   - 20 set 2010

Olá Pessoal estou trabalhando recentemente em um projeto web e estou usando uma classe retirada da video aula da devmedia Briefcase que nos ajuda a fazer conexao com o banco de dados e possui metodos que retornam dataset e datareader. O interessante e que  com o método que retorna o datareader não tem dado certo pois ao retornar o datareader não consigo exibir os dados nele contido. Pesquisando na net verifiquei que alguns sites informaram que quando a conexao e fechada com o db o reader realmente nao consegue ler os dados porem mesmo no metodo execute.Reader() eu colocando qualquer outro commandbehavior que nao seja o default ou o close ao ser retornado o reader para aplicação ele possui informaçõs da quantidade de dados de rows e ate mesmo a propriedade isclosed igual a false porem os dados que preciso deixa de ser acessado quando o reader e retornado. Por isso por enquanto estou usando o dataset mais preferia usar o reader visto que o que preciso e so uma row com 3 colunas. Alguem já passou por isso? Abraços 

Marcio
   - 27 set 2010

André,

Como você já pode comprovar, só dá para utilizar o DataReader com a conexão aberta, porque ele trabalha conectado.
Usar DataSet ou DataTable permite que vc trabalhe desconetado do banco.

Abaixo um exemplo de método que utilizo para recuperar uma DataTable, adapte para sua necessidade (neste caso estou usando banco sqlserver).

#Código

        /// <summary>
        /// Realiza uma Consulta no Banco de Dados
        /// </summary>
        /// <param name="sSql">Query a ser executada.</param>
        /// <returns>DataTable com o resultado da Consulta.</returns>
        public System.Data.DataTable GetDataTable(string sSql)
        {
            try
            {
                Open(); // Método que abre a conexão
                if (objConn.State == ConnectionState.Open)
                {
                    DataTable objDataTable = new DataTable();
                    SqlDataAdapter objDataAdapter = new SqlDataAdapter();
                    objDataAdapter.SelectCommand = new SqlCommand(sSql, objConn);
                    objDataAdapter.Fill(objDataTable);
                    Close();
                    return objDataTable;
                }

                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                if (objConn != null)
                {
                    if (objConn.State == ConnectionState.Open)
                    {
                        Close();
                    }
                }
                throw new Exception("Sql: Erro ao obter DataTable." + "Erro: " + ex.Message);
            }
        }


0
|
0

André Andrade
   - 27 set 2010

Seria isso mesmo marcio!! O que achei estranho foi no projeto da DevMedia eles terem criado uma classe que retorna um DataReader sendo que a conexão e fechada dentro do proprio metodo. Obrigado pela ajuda abraços

0
|
0