No primeiro artigo desta série de dois sobre generics, apresentamos a idéia fundamental (com exemplos inclusive) deste poderoso recurso da linguagem C#. Se você ainda não leu o primeiro artigo “Generics – Dinamismo no C# – Parte 1“, e não possui conhecimentos esquivalentes, recomendo fortemente a leitura do mesmo antes de prosseguir com a leitura deste.
Neste segundo artigo iremos implementar uma situação do mundo real e assim, fechar este conceito de generics. O que iremos fazer é consumir a tabela de categorias do banco Northwind através de uma lista e exibir esses dados em um GridView em uma página ASP.NET. Certo? Vamos lá!
Baixando e instalando o Northwind
O Northwind é uma base de dados de exemplo que a Microsoft disponibiliza gratuitamente para a realização de testes e até mesmo como fonte de estudos para quem está iniciando como desenvolvedor ou administrador de banco de dados. Ele simula de forma razoável o cenário de uma empresa de pequeno para médio porte, implementando tabelas de produtos, categorias, fornecedores, regiões, etc. Em nosso exemplo, iremos utilizar este banco de dados para apresentarmos o conceito de listas. Caso você já tenha o Northwind instalado e configurado no SQL Server, desconsidere os passos 1, 2 e 3.
Passo 1 – Baixando o Northwind para SQL Server: Vá até a Central de Downloads da Microsoft e efetue o download do arquivo com a extensão MSI.
Passo 2 – Instalando o Banco: Dê um duplo clique sobre o arquivo de instalação e prossiga com “Next” enquanto for solicitado e conclua a instalação.
Passo 3 – Adicionando o Northwind ao catálogo de BD’s: O Northwind já está instalado, entretanto, ainda não está devidamente configurado. Precisamos adicioná-lo ao catálogo de fontes de dados do SQL Server. Para tanto, abra o SQL Server e vá até a janela Object Explorer (geralmente localizada a direita do gerenciador). Na guia Databases clique com o botão direito. Na janela que se abre selecione a opção “Attach…“. Na janela que se abre, clique em “Add“. Navegue até a pasta criada em “C:SQL Server 2000 Sample Databases” (isto claro, se seu sistema operacional estiver configurado como C). Dê um duplo clique em “Northwind.mdf” e em seguida OK. A Figura 1 apresenta este procedimento.
Figura 1: Adicionando a base de dados Northwind ao catálogo do SQL Server
Muito bem, se tudo ocorreu como deveria, sua object explorer deve estar semelhante aquela apresentada na Figura 2.
Figura 2: Northwind incorporado ao catálodo de BD’s
Criando e implementando o projeto com Generics
Com nossa fonte de dados devidamente instalada e configurada, podemos partir para a implementação. Como já foi mencionado acima, o que faremos é consumir os dados da tabela Category da base de dados que acabamos de configurar através de uma lista e, em seguida, exibir estes dados em um GridView de uma página ASP.NET.
Não vou me ater aqui a detalhes de criação e configuração dos projetos, já que isso foi feito detalhadamente em artigos anteriores 😉 . A Figura 3 apresenta a página ASP.NET que irá exibir os dados da lista.
Figura 3: Página de exibição dos dados
O HTML construído para a composição da Figura 3 pode ser visualizado na Listagem 1.
Listagem 1: HTML da página de exibição
Basicamente o que foi feito até aqui foi o seguinte: criamos um novo projeto web e o nomeamos como Generics. Neste projeto adicionamos uma página ASP.NET e nela, realizamos a construção do HTML apresentado na Listagem 1, que resultou na Figura 3. Ok?
Muito bem, agora vamos a implementação de fato. Na página .aspx.cs criamos uma nova classe chamada Categorias. Esta classe implementa toda a lógica necessária para que possamos consumir os dados da base para passarmos a exibição no GridView. A Listagem 2 apresenta o código da classe.
public class Categorias
{
// Criando os campos para serem manipulados pelas propriedades //
private int _IDCategoria;
private string _NomeCategoria;
private string _Descricao;
// Refatorando e criando as propriedades //
public int IDCategoria
{
get { return _IDCategoria; }
set { _IDCategoria = value; }
}
public string NomeCategoria
{
get { return _NomeCategoria; }
set { _NomeCategoria = value; }
}
public string Descricao
{
get { return _Descricao; }
set { _Descricao = value; }
}
//Método que traz as categorias do banco, adiciona em uma Lista e exibe em um GridView //
public List retornaCategorias()
{
string stringConexao = @"Data Source=Fabricio-PC;Initial Catalog=Northwind;User ID=sa;Password=shell";
SqlConnection conexao = new SqlConnection(stringConexao);
SqlCommand cmd = new SqlCommand("SELECT CategoryID, CategoryName, Description FROM Categories ORDER BY CategoryName", conexao);
conexao.Open();
List lstCategorias = new List();
SqlDataReader registro = cmd.ExecuteReader();
while (registro.Read())
{
Categorias categoria = new Categorias();
categoria.IDCategoria = (int)registro["CategoryID"];
categoria.NomeCategoria = (string)registro["CategoryName"];
categoria.Descricao = (string)registro["Description"];
lstCategorias.Add(categoria);
}
return lstCategorias;
}
}
Listagem 2: Código da classe “Categorias”
O código da classe categoria é bastante simples. Basicamente o que fazemos é criar propriedades para manipular os campos que temos na tabela de categorias. Em seguida implementamos o método “retornaCategorias”. Como o próprio nome sugere, este método é o responsável por se conectar a base e retornar os dados da tabela Category através de uma lista. Finalmente, esta dentro do método Page_Load da classe Generics (Generics é o nome de meu projeto. O seu pode estar diferente), fornecemos a lista retornadada como fonte de dados para o GridView. A Listagem 3 apresenta o método Page_Load.
protected void Page_Load(object sender, EventArgs e)
{
Categorias listaCategorias = new Categorias();
GridView1.DataSource = listaCategorias.retornaCategorias();
GridView1.DataBind();
}
Listagem 3: Método page_load da classe Generics
Simples não? O que podemos concluir disso tudo é que Generics são um importantíssimo recurso para implementarmos aplicações cada vez mais de propósito geral, sem estarmos presos a um ou outro tipo de dados, tornando nosso aplicativo 100% orientado a objetos.
Você pode baixar o projeto utilizado neste exemplo clicando AQUI.
Bom pessoal é isso! Não esqueçam de deixar seu feedback através dos comentários ok? Grande abraço a todos! 🙂 .
Facebook
Twitter
Instagram
LinkedIn
RSS