Hoje eu vou falar um pouco sobre o objeto de leitura de dados conectado ao banco de dados. Em artigos anteriores, eu falei sobre o ADO.NET e seus objetos responsáveis por enviar, buscar e guardar dados, e agora eu vou falar e mostrar como trabalhar com o DataReader.


O artigo anterior, falei e mostrei como conectar ao banco de dados. Se você ainda não leu, seria interessante olhar e fazer o mesmo exemplo do artigo. Segue o link abaixo:


Link do artigo ADO.NET:

http://www.ecode10.com/artigo/1930/ADO-NET-e-conexao-SQL-Server



Veja o que vamos utilizar neste artigo:

  • Ferramenta Visual Studio 
  • Linguagem C#
  • Plataforma Web Forms
  • SQL Server
  • Conexão com o banco de dados


Este artigo será rápido porque não vou falar muito sobre os conceitos do DataReader, isso já foi falado anteriormente. Vamos passar direto para o código. Dentro do banco de dados BDTeste foi criada uma tabela chamada de Usuario. Essa tabela contém apenas duas colunas, um IdUsuario e outra NoUsuario. 


O que vou fazer agora é mandar uma instrução ao banco de dados para retornar todos os dados dessa tabela. Não posso esquecer que preenchi os dados com alguns nomes aleatórios. Para trabalhar com o SqlCommand e o SqlDataReader oi necessário importar duas classes dentro do projeto, veja no artigo anterior citado anteriormente. Veja o código 1.


using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConexaoSQLServerLocal"].ToString()))

{

try

                {

                    connection.Open();


                    SqlCommand command = new SqlCommand("SELECT NoUsuario FROM Usuario", connection);

                    SqlDataReader dReader = command.ExecuteReader();


                    while (dReader.Read())

                    {

                        Response.Write("
Nome: "
+ dReader["NoUsuario"].ToString());

                    }


                }

                catch (Exception ex)

                {

                    throw ex;

                }

                finally

                {

                    connection.Close();

                }

            }

Código 1 - Trabalhando com DataReader


Depois de abrir a conexão com o banco de dados, é necessário enviar uma instrução através da classe SqlCommand cujo o nome da variável foi dada de command. Logo quando for criar uma instância da classe, é necessário passar o comando e a conexão de banco de dados. Para isso, basta fazer um SELECT simples e depois mandar a variável de conexão criada. No nosso caso se chama connection.


No SELECT, vou buscar apenas o nome do usuário sem ordenação ou passagem de parâmetro. Para passar parâmetro é um outro caso e outro artigo para te mostrar, isso porque a segurança tem que ser levada em conta. Veja o código 2.


SqlCommand command = new SqlCommand("SELECT NoUsuario FROM Usuario", connection);

Código 2 - Criando o comando para envio ao banco de dados.


Você pode criar uma variável do tipo String armazenando o SELECT e depois coloque a variável dentro do command, isso pode ser outra opção interessante caso o SELECT for muito grande.


A próxima linha é responsável por executar o comando criada com o SELECT. Mas lembre-se que você precisar estar conectado ao banco de dados sempre. Veja o código 3.


SqlDataReader dReader = command.ExecuteReader();

Código 3 - Executando o comando no banco de dados e pegando os valores pedidos.


Note que o código 3 tem a sua importância, isso porque todos os valores solicitados estarão na variável chamada dReader, uma instância de SqlDataReader. Veja que a variável command enviou através do método ExecuteReader() a instrução escrita no código 2. Se todos os dados do banco de dados estão nesta variável, o próximo passo é lê-los. Veja o código 4.




while (dReader.Read())

{

Response.Write("
Nome: "
+ dReader["NoUsuario"].ToString());

}

Código 4 - Ler os dados do banco de dados.


Enquanto o objeto tiver dados o loop será executado. Dentro do loop existe o comando para escrever na tela o valor pego do campo chamado NoUsuario. Note que para pegar o valor dentro do objeto, basta usar o nome que está no SELECT entre colchetes. Pode ser colocado também um número caso prefira, por exemplo: dReader[0] ou dReader[“NoUsuario”].


Bem simples e fácil trabalhar com o DataReader. Vamos ver o resultado na figura 1.



Figura 1 - Imprimindo na tela os valores buscados do banco de dados.


Eu não posso deixar de comentar que toda vez que você utilizar o using SqlConnection, você estará utilizando automaticamente o pool de conexão e comunicação com o banco de dados. Isso significa que, o sistema aproveita a conexão criada anteriormente evitando assim muita comunicação ou requisição com o banco de dados. Aproveita a memória utilizada anteriormente e gasta menos memória para uma nova requisição.


Bom, eu vou ficar por aqui mas já aviso que em breve eu publico outro artigo falando mais sobre o DataReader no preenchimento de alguns objetos de layout. Qualquer dúvida, favor entrar em contato pelo site www.mauriciojunior.org.