C# - Gerenciamento de banco de dados MySQL - III
Continuando o meu artigo - C# - Gerenciamento de banco de dados MySQL - I - vou mostrar a definição da camada de apresentação - UI - da nossa aplicação através da criação de uma aplicação Windows Forms e assim encerrar esta série de artigos.
Estamos usando uma arquitetura em 3 camadas definida assim:
A camada de interface : UI - namespace UI
A camada de negócios : BLL - namespace BLL e classe produtoBLL
A camada de acesso a dados : DAL - namespace DAL e classe produtoDAL
A classe Produto que representa um produto do nosso domínio;
A nossa camada de interface será uma aplicação Windows Forms que possui um formulário onde através de um componente TabControl podemos obter uma visão com detalhes do produto e outra visão da relação dos produtos cadastrados conforme as figuras a seguir:
Para criar esta interface inclua o controle TabControl a partir da ToolBox e na sua propriedade TabPages clique no botão ao lado de Collection e defina duas TabPages definindo a propriedade nome da primeira- TabPage1- como sendo igual a Cadastro e da segunda - TabPage2- como Lista:
Inclua o
controle TabControl e defina a sua propriedade Na TabPage
Cadastro inclua os seguintes controles a - 3
Label Na TabPge
Lista inclua o componente DataGridView
-
|
Com isso temos a nossa interface pronta para ser usada. Fazemos isso acessando os dados da base MySQL e fazendo uma chamada a nossa camada de negócio (BLL) que por sua vez chama a camada de acesso a dados(DAL) que é responsável por recuperar e persistir informação na base de dados.
Vamos usar os eventos dos controles de formulário Button para fazer a chamada a nossa classe de negócio. Para isso no início do nosso formulário devemos ter as seguintes referências:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using BLL;
using DTO;
Note que temos que ter uma referência a camada de negócios BLL a nossa camada DTO - Data Transfer Object, onde definimos a classe Produto.
Vamos começar com o evento Click do botão Exibir que irá exibir os dados na TabPage Lista em um DataGridView;
void BtnExibirClick(object sender, EventArgs e) { |
Neste código criamos uma instância da classe ProdutoBLL() e em seguida usamos o método selecionaProdutos() que irá retornar um DataTable e exibir os produtos no DataGridView.
Vejamos agora o código do evento Click do botão Novo :
void BtnNovoClick(object sender, EventArgs e) { Produto p = new Produto(); p.Nome = (String) txtNome.Text; p.Preco = Convert.ToDecimal(txtPreco.Text); try{ BLL.produtoBLL bll = new produtoBLL(); bll.novoProduto(p); } catch
(Exception
ex) MessageBox.Show(" Erro : " + ex.Message.ToString()); } }
|
Primeiro criamos uma instância da classe Produto e definimos as propriedades Nome e Preco atribuindo a elas os valores fornecidos pelo usuário através das caixas de texto txtNome e txtPreco. Não precisamos informar o código do produto(ID) pois o mesmo é controlado pelo SGBD visto que definimos este campo como do tipo identity.
A seguir criamos uma instância da classe ProdutoBLL() no namespace BLL e em seguida usamos o método novoProduto(p) para incluir um novo produto na base de dados. Observe que passamos como parâmetro um objeto produto e não valores escalares.
A seguir temos o código associado ao evento Click do botão Alterar:
void BtnAlterarClick(object sender, EventArgs e) { Produto p = new Produto(); p.ID = Convert.ToInt32(txtID.Text); p.Nome = (String) txtNome.Text; p.Preco = Convert.ToDecimal(txtPreco.Text);
BLL.produtoBLL bll = new produtoBLL(); bll.alteraProduto(p); } catch
(Exception ex) MessageBox.Show(" Erro : " + ex.Message.ToString()); } } |
Primeiro criamos uma instância da classe Produto e definimos as propriedades ID, Nome e Preco atribuindo a elas os valores fornecidos pelo usuário através das caixas de texto txtID, txtNome e txtPreco. Aqui precisamos informar o ID do produto para identificar o produto a ser alterado.
A seguir criamos uma instância da classe ProdutoBLL() no namespace BLL e em seguida usamos o método alteraProduto(p) para alterar um produto na base de dados. Observe que passamos como parâmetro um objeto produto e não valores escalares.
Vejamos agora o código do evento Click do botão Excluir:
void BtnExcluirClick(object sender, EventArgs e) { |
Primeiro criamos uma instância da classe Produto e definimos a propriedade ID atribuindo a ela o valor fornecido pelo usuário através das caixas de texto txtID.
A seguir criamos uma instância da classe ProdutoBLL() no namespace BLL e em seguida usamos o método excluiProduto(p) para excluir um produto na base de dados identificado pelo parâmetro ID informado.
Finalmente temos o código do botão Procurar:
void BtnProcurarClick(object sender, EventArgs e) { int id = Convert.ToInt32(txtID.Text); Produto p = new Produto(); try{ BLL.produtoBLL bll = new produtoBLL(); p = bll.listaProdutoPorID(id); txtNome.Text = p.Nome; txtPreco.Text = p.Preco.ToString(); } catch
(Exception ex) MessageBox.Show(" Erro : " + ex.Message.ToString()); } } |
Neste código obtemos o código do produto (ID) a partir da caixa de texto txtID.Text. A seguir criamos uma instância da classe Produto() e invocamos o método listaProdutoPorID usando o id obtido; por fim exibimos os dados do produto no formulário.
Com isso encerramos a nossa aplicação que acessa o MySQL usando uma arquitetura em camadas. Aplicamos os conceitos básicos da orientação a objetos mas podemos ir além, pois usamos na camada DTO uma classe anêmica sem nenhuma inteligência e não usamos o conceito de interface neste projeto. Deixo isso para você como um exercício.
Eu sei é apenas Visual C# e MySQL, mas eu gosto...
Obs: A vídeo aula completa desta séria de artigos esta no Super DVD Vídeo Aulas.
Referências:
José Carlos Macoratti