|
<< Click to Display Table of Contents >> Programação em camadas - Método 1 |
![]() ![]()
|
Cliente.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace VendasModel
{
public class Cliente
{
public int Id { get; set; }
public string Nome { get; set; }
public string Cpf { get; set; }
public string Email { get; set; }
public string Sexo { get; set; }
public DateTime Data { get; set; }
public string EstadoCivil { get; set; }
}
}
ConexaoMySql.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data.MySqlClient;
using VendasModel;
namespace VendasDAL
{
public class ConexaoMySql : IDisposable
{
static private MySqlConnection conexao;
static private ConexaoMySql conexaoMySql;
static private MySqlTransaction transacao;
public static ConexaoMySql GetConexaoMySql()
{
if (conexaoMySql == null)
conexaoMySql = new ConexaoMySql();
return conexaoMySql;
}
public void Conectar()
{
try
{
if (conexao == null)
conexao = new MySqlConnection("Server=localhost;Database=vendas;Uid=root;Pwd=123456;");
if (conexao.State == ConnectionState.Closed)
conexao.Open();
Retorno.Set(true);
}
catch (Exception e)
{
Retorno.Set(false, e.Message);
}
}
public MySqlCommand Preparar(string sql)
{
MySqlCommand comando = new MySqlCommand(sql, conexao);
comando.CommandType = CommandType.StoredProcedure;
return comando;
}
public void Desconectar()
{
conexao.Close();
}
public static void StartTransaction()
{
ConexaoMySql con = GetConexaoMySql();
con.Conectar();
transacao = conexao.BeginTransaction();
}
public static void Commit()
{
transacao.Commit();
}
public static void Rollback()
{
transacao.Rollback();
}
public void Dispose()
{
Desconectar();
}
}
}
ClienteDAL.cs
using System;
using System.Data;
using System.Collections.Generic;
using MySql.Data.MySqlClient;
using VendasModel;
namespace VendasDAL
{
public class ClienteDAL
{
private static bool comando(ref Cliente cliente, string sql, bool paramOut = false)
{
ConexaoMySql conexao = ConexaoMySql.GetConexaoMySql();
conexao.Conectar();
if (!Retorno.Ok)
return false;
MySqlCommand cmd = conexao.Preparar(sql);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("iid", cliente.Id);
cmd.Parameters.AddWithValue("inome", cliente.Nome);
cmd.Parameters.AddWithValue("icpf", cliente.Cpf);
cmd.Parameters.AddWithValue("isexo", cliente.Sexo);
cmd.Parameters.AddWithValue("iemail", cliente.Email);
cmd.Parameters.AddWithValue("idata", cliente.Data);
cmd.Parameters.AddWithValue("iestado_civil", cliente.EstadoCivil);
if (paramOut)
{
cmd.Parameters.Add("oid", MySqlDbType.Int32);
cmd.Parameters["oid"].Direction = ParameterDirection.Output;
}
try
{
cmd.ExecuteNonQuery();
if (paramOut)
cliente.Id = Convert.ToInt32(cmd.Parameters["oid"].Value);
}
catch (Exception e)
{
Retorno.Set(false, e.Message);
}
return Retorno.Ok;
}
public static bool Inserir(ref Cliente cliente)
{
return comando(ref cliente, "inserir_cliente", true);
}
public static bool Atualizar(Cliente cliente)
{
return comando(ref cliente, "atualizar_cliente");
}
public static bool Excluir(Cliente cliente)
{
return comando(ref cliente, "excluir_cliente");
}
private static Cliente Atribuir(MySqlDataReader dr)
{
Cliente cliente = new Cliente()
{
Id = int.Parse(dr["id_cliente"].ToString()),
Nome = dr["nome"].ToString(),
Cpf = dr["cpf"].ToString(),
Data = Convert.ToDateTime(dr["data"].ToString()),
Email = dr["email"].ToString(),
EstadoCivil = dr["estado_civil"].ToString(),
Sexo = dr["sexo"].ToString()
};
return cliente;
}
public static Cliente GetCliente(int id)
{
List<Cliente> lista = Listar();
if (lista.Count > 0)
return lista[0];
else
return new Cliente();
}
public static List<Cliente> Listar(int id = 0)
{
List<Cliente> lista = new List<Cliente>();
// conecta com a base
ConexaoMySql conexao = ConexaoMySql.GetConexaoMySql();
// se não conseguiu conectar
conexao.Conectar();
if (!Retorno.Ok)
return lista;
// cria o comando
MySqlCommand cmd = conexao.Preparar("selecionar_cliente");
cmd.Parameters.AddWithValue("iid", id);
try
{
// pra cada linha lida vai montando a List<Cliente>
using (MySqlDataReader dr = cmd.ExecuteReader())
while (dr.Read())
lista.Add(Atribuir(dr));
}
catch (Exception e)
{
Retorno.Set(false, e.Message);
}
return lista;
}
}
}
TransacaoBLL.cs
using System;
using VendasDAL;
namespace VendasBLL
{
public static class TransacaoBLL
{
public static void Start()
{
ConexaoMySql.StartTransaction();
}
public static void Commit()
{
ConexaoMySql.Commit();
}
public static void RollBack()
{
ConexaoMySql.Rollback();
}
}
}
ClienteBLL.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VendasDAL;
using VendasModel;
namespace VendasBLL
{
public class ClienteBLL
{
public static bool Inserir(ref Cliente cliente)
{
return ClienteDAL.Inserir(ref cliente);
}
public static bool Atualizar(Cliente cliente)
{
return ClienteDAL.Atualizar(cliente);
}
public static bool Excluir(Cliente cliente)
{
return ClienteDAL.Excluir(cliente);
}
public static Cliente GetCliente(int id)
{
return ClienteDAL.GetCliente(id);
}
public static List<Cliente> Listar()
{
return ClienteDAL.Listar();
}
}
}
ListarCliente.cs
public void RetornarClientes()
{
gridCliente.DataSource = ClienteBLL.Listar();
gridCliente.DataBind();
}
EditarCliente.cs
protected void btnSalvar_Click(object sender, EventArgs e)
{
Cliente cliente = new Cliente()
{
Id = int.Parse(lblId.Text),
Nome = txtNome.Text,
Cpf = txtCPF.Text,
Email = txtEmail.Text,
Sexo = rblSexo.SelectedValue,
EstadoCivil = ddlEstadoCivil.SelectedValue,
Data = DateTime.Now
};
ClienteBLL.Atualizar(cliente);
// deu erro?
if (Retorno.Ok)
Response.Redirect("ListarClientes.aspx");
else
{
lblMsg.Text = Retorno.MsgErro;
lblMsg.CssClass = "erro";
}
}
IncluirCliente.cs
Cliente cliente = new Cliente()
{
Nome = txtNome.Text,
Cpf = txtCPF.Text,
Email = txtEmail.Text,
Sexo = rblSexo.SelectedValue,
EstadoCivil = rblEstadoCivil.SelectedValue,
Data = DateTime.Now
};
TransacaoBLL.Start();
ClienteBLL.Inserir(ref cliente);
// deu erro?
if (Retorno.Ok)
{
TransacaoBLL.Commit();
Response.Redirect("ListarClientes.aspx");
return;
}
lblMsg.Text = Retorno.MsgErro;
lblMsg.CssClass = "erro";
TransacaoBLL.RollBack();
lblMsg.Visible = true;
Retorno.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Model
{
public static class Retorno
{
public static string MsgErro;
public static bool Ok;
public static void Set(bool ok, string msgErro)
{
Retorno.Ok = ok;
Retorno.MsgErro = msgErro;
}
public static void Set(bool ok)
{
Retorno.Ok = ok;
Retorno.MsgErro = "";
}
}
}
Base
Falta pegar o script da procedure