Escolar Documentos
Profissional Documentos
Cultura Documentos
A UI chama a BLL que chama a DLL que por sua vez acesso os dados
e retorna os objetos;
8-Clique no
7-Informe uma senha ao
botão Execute para processar
usuário root
as opções definidas
3 controles Label
3 Controles TextBox :txtID, txtNome e txtPreco
5 controles Button : btnNovo, btnAltear, btnExcluir, btnExibir
e btnProcurar
using System;
namespace DTO
{
public class Produto
{
int _id;
String _nome;
Decimal _preco;
public int ID
{
get {return _id;}
set {_id = value;}
}
public String Nome
{
get {return _nome;}
set {_nome = value;}
}
public Decimal Preco
{
get {return _preco;}
set {_preco = value;}
}
}
}
Neste arquivo criamos a classe Produto e definimos os membros _id,
_nome e _preco e as propriedades ID, Nome e Preco. Ela será usada
para transferência de objetos entre as camadas de interface de
negócio e de acesso a dados.
using System;
using System.Collections.Generic;
using System.Data;
using MySql.Data.MySqlClient;
using DTO;
String _conexaoMySQL = "";
MySqlConnection con = null;
public produtoDAL()
{
_conexaoMySQL = "server=localhost;user
id=root;password=password;database=cadastr
o";
}
onde temos:
server - localhost , pois estou acessando o MySQL instalado na minha
máquina local;
id = root , pois estou usando o usuário root;
password = password , pois essa foi a senha definida para o usuário
root;
database=cadastro, pois esse é o banco de dados que criamos no
MySQL;
public Produto selectProdutoByID(
int id)
{
try{
String sql = "SELECT * FROM
Estoque WHERE id = @id";
con
= new MySqlConnection(_conexao
MySQL);
MySqlCommand cmd
= new MySqlCommand(sql,con);
cmd.Parameters.AddWithValue("@
id",id);
con.Open();
MySqlDataReader dr;
Produto produto
= new Produto();
dr =
cmd.ExecuteReader(CommandBeh
avior.CloseConnection);
while (dr.Read()) {
produto.ID
= Convert.ToInt32(dr["id"]);
produto.Nome =
dr["Nome"].ToString();
produto.Preco
= Convert.ToDecimal(dr["Preco"]);
}
return produto;
}
catch (Exception ex)
{
throw ex;
}
}
cmd.Parameters.AddWithValue("@nome",pro
duto.Nome);
cmd.Parameters.AddWithValue("@preco",pro
duto.Preco);
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally{
con.Close();
}
}
cmd.Parameters.AddWithValue("@id",produt
o.ID);
cmd.Parameters.AddWithValue("@nome",pro
duto.Nome);
cmd.Parameters.AddWithValue("@preco",pro
duto.Preco);
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally{
con.Close();
}
}
cmd.Parameters.AddWithValue("@id
",produto.ID);
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally{
con.Close();
}
}
using System.Collections.Generic;
using System;
using DAL;
using DTO;
using System.Data;
public pro
dutoBLL()
{}
public DataTable selecionaProdutos()
{
DataTable tb = new DataTable();
try{
dal = new DAL.produtoDAL();
tb = dal.selectProdutos();
}
catch (Exception ex)
{
throw ex;
}
return tb;
}
public Produto listaProdut
oPorID(int id)
{
try{
dal
= new produtoDAL();
return dal.selectPro
dutoByID(id);
}catch (Exception ex) {
throw ex;
}
}
public List<Produto>
listaProdutos()
{
try{
dal
= new produtoDAL();
return dal.selectListProdu
tos();
}catch (Exception ex)
{
throw ex;
}
}
4- novoProduto(Produto produto) - Usada para incluir um novo
produto no estoque usando o método insertProduto() da camada
DAL;
public void novoProduto(P
roduto produto){
try{
dal
= new DAL.produtoDAL();
dal.insertProduto(produto)
;
}catch (Exception ex) {
throw ex;
}
}
public void alteraProduto(
Produto produto){
try{
dal
= new DAL.produtoDAL();
dal.updateProduto(produt
o);
}catch (Exception ex) {
throw ex;
}
}
public void excluiProduto(
Produto produto){
try{
dal
= new produtoDAL();
dal.deleteProduto(produto
);
}catch (Exception ex) {
throw ex;
}
}
- 3 Label
- 3 TextBox - txtID , txtNome e txtPreco
- 4 Button - btnNovo, btnAlterar, btnExcluir, bt
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;
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());
}
}
void BtnNovoClick(object sender, EventArgs e)
{
Produto p = new Produto();
p.Preco = Convert.ToDecimal(txtPreco.Text);
try{
BLL.produtoBLL bll = new produtoBLL();
bll.novoProduto(p);
}
catch (Exception ex)
{
}
void BtnAlterarClick(object sender, EventArgs e)
{
Produto p = new Produto();
p.ID = Convert.ToInt32(txtID.Text);
p.Preco = Convert.ToDecimal(txtPreco.Text);
try{
BLL.produtoBLL bll = new produtoBLL();
bll.alteraProduto(p);
catch (Exception ex)
{
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());
}
}
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)
{
using System.Data;
using MySql.Data.MySqlClient;
try{
//abre a conexao
mConn.Open();
}
catch(System.Exception e)
{
MessageBox.Show(e.Message.ToString());
}
//verificva se a conexão esta aberta
if (mConn.State == ConnectionState.Open)
{
//cria um adapter usando a instrução SQL para
acessar a tabela Clientes
mAdapter = new MySqlDataAdapter("SELECT *
FROM Clientes", mConn);
//preenche o dataset via adapter
mAdapter.Fill(mDataSet, "Clientes");
//atribui a resultado a propriedade DataSource do
DataGrid
mDataGrid.DataSource = mDataSet;
mDataGrid.DataMember = "Clientes";
}
}
Ao usar o comando Open o MySqlConnection tenta obter uma
conexão a partir do pool de conexão , se não existir uma conexão
disponível, será estabelecida uma nova conexão com uma instância
do MySQL.
mConn.Open();
Ao executar o projeto iremos obter o seguinte resultado no controle
DataGrid;
Este foi apenas uma pequena introdução ao acesso a dados
com MySQL e C#. Aguarde em breve artigos mais avançados...
Um bom estudo para você...
Pegue o projeto completo aqui: MySQLExemplo.zip