Você está aqui: C# ::: C# + Bancos de Dados ::: DbDataReader |
Saiba mais sobre o funcionamento de um DataReaderQuantidade 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. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de C# |
Veja mais Dicas e truques de C# |
Dicas e truques de outras linguagens |
Ruby - Como inserir uma substring em uma determinada posição de uma string em Ruby usando a função insert() JavaScript - Como obter o código da tecla pressionada em um elemento HTML usando o evento onkeypress do JavaScript |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |