Codificação Inicial: Introdução ao LINQ – Parte 3

Olá pessoal, neste artigo começaremos a criar um exemplo prático em Windows Forms, com C# e SQL Server. Acompanhem:

Se você não viu as partes 1 e 2 desta série de artigos sugiro que as veja clicando aqui.

 Para o projeto que será criado usaremos o banco de dados de exemplo Northwind, da Microsoft.

Antes de criar o projeto, devemos criar a conexão entre o Visual Studio e o Northwind. Para quem usa Windows 7 (como é o meu caso) o Visual Studio deve ser executado como administrador. Ainda sem projeto criado, abra a janela Server Explorer, clique com o botão direito em Data Connections e clique em Add Connection. Na nova tela, selecione seu servidor SQL, escolha o database Northwind e clique em OK.

Agora crie o projeto Windows Forms e adicione um ComboBox e um DataGridView. A ideia é popularmos nosso Grid com 20 produtos da tabela Products, do Northwind e utilizarmos o LINQ para filtrarmos os produtos (será feita na parte 4 desta série de artigos), de acordo com o valor selecionado no ComboBox.

Inicialmente vá à página de códigos do formulário e crie uma classe chamada Products, que terá algumas propriedades, referentes a colunas da tabela Products, do Northwind, como é ilustrado na Listagem 01:

Listagem 01 – Classe Products com propriedades 



public class Products

{

public int ProductID { get; set; }

public string ProductName { get; set; }

public decimal UnitPrice { get; set; }

public decimal UnitsInStock { get; set; }

}


Agora crie o método CarregarGridView, que será responsável por fazer a lógica de acesso a dados na tabela Products. Veja o código abaixo, na Listagem 02.

Listagem 02 – Método para retornar os dados da tabela Products


private List CarregarGridView()

{

List lstProducts = new List();

string strConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True";

string strInstrucaoSelect = "SELECT TOP 20 ProductID, ProductName, UnitPrice, UnitsInStock FROM Products";

using (SqlConnection objConexao = new SqlConnection(strConnectionString))

{

using (SqlCommand objCommand = new SqlCommand(strInstrucaoSelect, objConexao))

{

objConexao.Open();

SqlDataReader objDataReader = objCommand.ExecuteReader();

if (objDataReader.HasRows)

{

while (objDataReader.Read())

{

Products objProducts = new Products();

objProducts.ProductID = Convert.ToInt32(objDataReader["ProductID"].ToString());

objProducts.ProductName = objDataReader["ProductName"].ToString();

objProducts.UnitPrice = Convert.ToDecimal(objDataReader["UnitPrice"].ToString());

objProducts.UnitsInStock = Convert.ToDecimal(objDataReader["UnitsInStock"].ToString());

lstProducts.Add(objProducts);

}

objDataReader.Close();

}

}

objConexao.Close();

}

return lstProducts;

}


O que fiz acima basicamente foi criar um método do tipo List<T> (lista genérica “tipada”), usando como tipo pra lista a classe Products, instanciar um objeto dessa classe (que será o retorno do método), atribuir o objeto de conexão e objeto de comando, passar a instrução SQL de SELECT, abrir a conexão, atribuir o retorno dos dados a um objeto do tipo SqlDataReader e, após isso, usar o laço while para iterar seus valores.

Dentro do while é instanciado um objeto do tipo da classe Products, atribuído os valores do objDataReader (vindos do banco) para as propriedades da classe e, finalmente, adicionado os valores armazenados no objProducts em minha lista, instanciada no começo do método. Finalizando é fechado o objDataReader e o objConexao e retornado a lista, com os dados carregados.

Para ver uma explicação detalhada de um método parecido com esse sugiro que vejam as videoaulas publicadas neste artigo.

Volte ao formulário e dê dois cliques na parte cinza do mesmo para chamar seu evento Load. Dentro dele insira o código da Listagem 03.

Listagem 03 – Evento Load do Formulário



private void Form1_Load(object sender, EventArgs e)

{

List lstProducts = new List();

lstProducts = CarregarGridView();

dgvProdutos.DataSource = lstProducts;

}


Dessa forma, ao rodar a aplicação são carregados os dados no Grid, como ilustra a Figura 01.

Figura 01 – Dados da tabela Products

 Assim finalizo o artigo. Muito obrigado a todos!

Na próxima parte veremos o desfecho de nossa codificação carregando os dados no GridView de acordo com o valor selecionado no ComboBox (utilizando LINQ, é claro). Aguardem!

 Um abraço, e até o próximo artigo.

 Wellington Balbo de Camargo

wellingtonbalbo@gmail.com