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.