Você está na página 1de 5

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
Appearence como igual a FlatButtons;

Na TabPage Cadastro inclua os seguintes controles a


partir da ToolBox:

- 3 Label
- 3 TextBox - txtID , txtNome e txtPreco
- 4 Button - btnNovo, btnAlterar, btnExcluir, btnExibir e
btnProcurar

Na TabPge Lista inclua o componente DataGridView -


gdvProdutos

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)

{
try{
BLL.produtoBLL bll = new produtoBLL();
gdvProdutos.DataSource =
bll.selecionaProdutos();
}catch (Exception ex){
MessageBox.Show(" Erro : " +
ex.Message.ToString());
}
}

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);

try{

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)

{
Produto p = new Produto();
p.ID = Convert.ToInt32(txtID.Text);
try{
BLL.produtoBLL bll = new produtoBLL();
bll.excluiProduto(p);
}
catch (Exception ex)
{
MessageBox.Show(" Erro : " +
ex.Message.ToString());
}
}

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:

• MySQL - fundamentos SQL


• ASP.NET - Acessando o MySQL em páginas ASP.NET
• ASP.NET - Conexao com MySQL
• Instalando e usando o ODBC .Net Data Provider
• Posso distribuir o MySQL livremente com minhas aplicaç~eos VB ?
• Acessando o MySQL
•C# - Acessando MySQL
• Retornado o valor do campo Identity

José Carlos Macoratti

Você também pode gostar