quarta-feira, 14 de agosto de 2013

3 Camadas - Efetuando uma conexão com o Banco de Dados

As mais conhecidas e faladas 3 camadas ou n camadas ou também N-Tier rs,, vou colocar neste artigo uma breve descrição e um código em C# ASP .NET 3.5 funcionando com N-Tier.

As três camadas (Camada de apresentação / Camada de negócio / Camada de dados), é muito útil para futura implementação e correções ou até mesmo alteração de layout / design.



Em SolutionExplorer clique com o botão direito do mouse em sua solução e Add New Item, selecione Class (Obs. Terá que adicionar 2 Classes BLL.cs / DAL.cs).

Obs. Os arquivos serão adicionados em App_Code.

Coloque o código abaixo para as respectivas classes:
DAL.CS
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
// Referencia para conectar ao Access
using System.Data.OleDb;

/// <summary>
/// Está é a classe que irá acessar o banco e retorna a instrução
/// </summary>

namespace Web.DAL
{
    public class CamadaAcessoDados
    {
        //String de conexão para banco de dados em Access.
        // Adicione o banco de dados em c: emp
        private string connectionString = "Provider=Microsoft.JET.OLEDB.4.0; data source=c: empBancoDeDados.mdb";

        public DataSet RetornaDataSet(string Sql)
        {
            // Informa a conexção
            OleDbConnection conn = new OleDbConnection(connectionString);
            // Informa conexão com instrução SQL vinda da BLL
            OleDbDataAdapter adp = new OleDbDataAdapter(Sql, conn);
            // Instancia data set
            DataSet ds = new DataSet();
            // Preenche data Set
            adp.Fill(ds);
            // Fecha conexão
            conn.Close();
            // retorna o Data SET
            return ds;
        }

        public void Inserir(string Sql)
        {
            // Informa a conexção
            OleDbConnection conn = new OleDbConnection(connectionString);
            // Abre a conexão
            conn.Open();
            // Informa conexão com instrução SQL vinda da BLL
            OleDbCommand cmd = new OleDbCommand(Sql, conn);
            // Executa ação
            cmd.ExecuteNonQuery();
            // Fecha conexção
            conn.Close();
        }
    }
}
BLL.cs
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
// Adicione a DAL
using Web.DAL;

/// <summary>
/// Summary description for BLL
/// </summary> 
///

namespace Web.BLL
{
    public class CamadaLogicaNegocio
    {
        // Exemplo de retorno de informação Data Set

        #region DataSet´s

        public DataSet ObtemUsuarios()
        {
            // Istancia a Camada de Dados
            CamadaAcessoDados dal = new CamadaAcessoDados();
            // Instrução SQL
            return dal.RetornaDataSet(" SELECT TOP 1 NomeUsuario FROM tblusuarios ");
        }

        #endregion

        // Exemplo de Adicionar informação

        #region Insert´s

        public void InserirUsuario(string usuario)
        {
            CamadaAcessoDados dal = new CamadaAcessoDados();
            dal.Inserir("INSERT INTO tblusuarios " +
                        "(NomeUsuario)VALUES(""
                        + usuario + "")");
        }

        #endregion
    }
}


Neste ponto já temos nossa Camada Lógica preenchida e nossa Camada de Acesso a Dados, segue abaixo as informações de nossa Default.aspx e Default.aspx.cs para entender como funciona o exemplo.
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
            <asp:Panel ID="Panel1" runat="server" Width="600px" Height="500px">
            <asp:Label ID="Label1" runat="server" Text="3 Camadas com Acesso a Dados"
                Font-Bold="True" Font-Names="Batang" ForeColor="#0000CC"></asp:Label>
            <br />
            <br />
            <br />
                <asp:TextBox ID="txtUsuario" runat="server"></asp:TextBox>
                <asp:Button ID="btnRetornar" runat="server" onclick="btnRetornar_Click"
                    Text="Retorne o primeiro Usuario" />
                &nbsp;<asp:Button ID="btnAdicionar" runat="server" onclick="btnAdicionar_Click"
                    Text="Adicionar Usuario" />
                <br />
                <br />
                <asp:Label ID="lblLog" runat="server" Font-Bold="True" Font-Italic="True"
                    Text="Sem Log no Momento"></asp:Label>
        </asp:Panel>
    </div>
    </form>
</body>
</html>


Default.aspx.cs

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
// Referenciar a Camada Logica -> BLL
using Web.BLL;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnRetornar_Click(object sender, EventArgs e)
    {
        //Instanciar Camada Logica -> BLL
        CamadaLogicaNegocio cln = new CamadaLogicaNegocio();
        //Instanciar Data Set
        DataSet ds = new DataSet();
        // Receber o retorno e preencher data Set
        ds = cln.ObtemUsuarios();
        // Apenas adicionar a informação do banco de dados no textbox
        txtUsuario.Text = ds.Tables[0].Rows[0]["NomeUsuario"].ToString();

    }
    protected void btnAdicionar_Click(object sender, EventArgs e)
    {
        if (txtUsuario.Text != "")
        {
            //Instanciar Camada Logica -> BLL
            CamadaLogicaNegocio cln = new CamadaLogicaNegocio();
            cln.InserirUsuario(txtUsuario.Text.ToString());
            lblLog.Text = "Usuario Adicionado";
        }
        else
        {
            lblLog.Text = "Adicione um nome de Usuário";
        }
    }
}

Pronto, está funcionando com dois exemplos, retorno de informação do banco de dados e inclusão da informação.

Baixe o projeto:

0 comentários:

Postar um comentário