Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: C# ::: C# + Bancos de Dados ::: DbDataReader

Saiba mais sobre o funcionamento de um DataReader

Quantidade de visualizações: 15435 vezes
Quando pensamos em efetuar uma conexão C# com um banco de dados e listar os registros de uma determinada tabela, um DataReader (na verdade o nome da classe é DbDataReader) é o terceiro componente na lista daqueles necessários para efetuar tal tarefa.

O primeiro componente que precisamos é DbConnection, uma classe abstrata que tem entre suas classes derivadas as classes OdbcConnection, OleDbConnection, OracleConnection, SqlConnection e SqlCeConnection. Um objeto de uma classe que descende de DbConnection é o responsável por obter e manter a conexão com o banco de dados.

O segundo componente é aquele que permite "conversar" com o banco de dados, a saber, um objeto da classe DbCommand. Entre as classes que derivam de DbCommand podemos citar OdbcCommand, OleDbCommand, OracleCommand, SqlCommand e SqlCeCommand. Usamos objetos da classe DbCommand para enviar instruções SQL ao banco de dados.

Uma vez conectados ao banco de dados e com uma instrução SELECT pronta para ser executada, é preciso que tenhamos um componente que guarde os registro retornados pela instrução SELECT. Este componente é, em boa parte das aplicações, um DataReader.

Um DataReader é um objeto que implementa a interface System.Data.IDataReader. Este componente permite obter os dados retornados por um DbCommand em forma de registros (um registro por linha). Os dados mantidos no componente são de leitura rápida, mas, de mão única e somente leitura. Por mão única entendemos que os dados são lidos apenas em uma direção, ou seja, um DataReader não permite voltar ao registro anterior.

Veja um trecho de código no qual efetuamos uma conexão com o banco de dados, disparamos um comando SELECT e obtemos os registros retornados em um DbDataReader (usei um OdbcDataReader porque me conectei a um banco de dados MySQL usando ODBC):

private void button1_Click(object sender, EventArgs e){
  // obtém a conexão com o banco de dados
  OdbcConnection conn = ConexaoODBC.obterConexao();

  // string para auxiliar na exibição dos dados lidos
  string temp = "Registros retornados:\n\n";

  if(conn != null){
    // obtém todos os clientes cadastrados
    OdbcCommand cmd = new OdbcCommand("SELECT * FROM clientes", 
      conn);

    // obtém os dados retornados em forma de DataReader
    OdbcDataReader dr = cmd.ExecuteReader();

    // vamos exibir os dados de cada cliente encontrado
    while(dr.Read()){
      temp += dr["id"].ToString() + " ::: ";


Neste exemplo usei ODBC. Se estiver usando SQL Server, use as classes correspondentes (SqlConnection, SqlCommand e SqlDataReader). Note que um DataReader é sempre obtido como resultado de uma chamada ao método ExecuteReader() da classe DbCommand:

// obtém os dados retornados em forma de DataReader
OdbcDataReader dr = cmd.ExecuteReader();


Quando o comando SQL é enviado ao banco de dados e um DataReader é retornado, seu cursor é posicionado antes do primeiro registro. Assim, é preciso efetuar chamadas ao seu método Read() para que o cursor seja posicionado no próximo registro. Quando o método retornar false saberemos que não há mais registros a serem lidos. Por esta razão, um laço while é quase sempre usado neste cenário:

// vamos exibir os dados de cada cliente encontrado
while(dr.Read()){
  temp += dr["id"].ToString() + " ::: ";
  temp += dr["nome"].ToString() + " ::: ";


Cada registro contido no DataReader é composto de uma coleção de objetos. Cada objeto representando um campo na tabela. Os objetos desta coleção podem ser acessados por índices (começando em 0) ou pelo nome do campo na tabela. Neste exemplo usamos o método de acessar cada objeto usando o nome do campo.

Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de C#

Veja mais Dicas e truques de C#

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 27 usuários muito felizes estudando em nosso site.