ASP .NET  - Criando e implementando uma arquitetura em 3 camadas - IV


Neste artigo vou mostrar como criar e implementar uma arquitetura em 3 camadas em uma aplicação ASP .NET Web Forms usando o VS Community 2015.

Vamos continuar a criação da nossa aplicação ASP .NET em 3 camadas onde, na terceira parte do artigo, definimos a estrutura da camada de apresentação WebUI. Neste artigo vamos implementar as funcionalidades para acessar e realizar as operações com o banco de dados.

Implementando as funcionalidades de acesso e persistência dos dados

1- Exibindo os dados na página web

Quando nosso projeto for executado vamos exibir as informações dos clientes cadastrados no controle GridView - gvClientes - de forma que o usuário tenha  uma visão dos clientes que já estão cadastrados.

Para fazer isso podemos usar o método ExibirTodos() da camada de negócio ClienteBLL;

Podemos chamar o método no evento Load da página Default.aspx e carregar o controle GridView com os dados da tabela Clientes.

Então no evento Load da página inclua o código a seguir:

using Aspnet3Camadas.BLL;
using System;
namespace Aspnet3Camadas.WebUI
{
    public partial class Default : System.Web.UI.Page
    {
        ClienteBLL _clienteBLL = new ClienteBLL();
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                gvClientes.DataSource = _clienteBLL.ExibirTodos();
                gvClientes.DataBind();
            }
            catch (Exception ex)
            {
                lblmsg.Text = ex.Message;
            }
        }
    }
}

Observe que tivemos que declarar as referências aos projetos BLL e DTO na página web:

using Aspnet3Camadas.BLL;
using Aspnet3Camadas.DTO;

Para poder acessar os métodos da classe ClienteBLL criamos uma instância da classe  : ClienteBLL _cliente;

Depois, no interior de um bloco Try/Catch, e no evento Load da página chamamos o método ExibirTodos() via instância da classe e atribuímos o resultado ao GridView:

                gvClientes.DataSource = _cliente.ExibirTodos();
                gvClientes.DataBind();

O resultado pode ser visto na figura abaixo:

Localizando informações na camada de interface  - UI

Agora vamos localizar as informações de um cliente pelo seu Id.

Para fazer isso basta informar o código no campo Codigo e clicar no botão Localizar;

No evento Click do botão Localizar vamos chamar o método GetClienteId() da classe ClienteBLL que irá retornar um objeto Cliente com as informações do respectivo cliente.

        protected void btnLocalizar_Click(object sender, EventArgs e)
        {
            Cliente _cliente = new Cliente();
            if (!string.IsNullOrWhiteSpace(txtId.Text))
            {
                int codigo = Convert.ToInt32(txtId.Text);
                try
                {
                    _cliente = _clienteBLL.GetClienteId(codigo);
                    txtNome.Text = _cliente.nome;
                    txtEndereco.Text = _cliente.endereco;
                    txtTelefone.Text = _cliente.telefone;
                    txtEmail.Text = _cliente.email;
                    txtObservacao.Text = _cliente.observacao;
                }
                catch (Exception ex)
                {
                    lblmsg.Text = ex.Message;
                }
            }
            else
            { 
                     lblmsg.Text = "Informe o Id do cliente.";                
            }
        }

No código criamos uma instância da classe Cliente para receber as informações retornadas pelo método GetClienteId() que chamamos passando o código informado na caixa de texto txtId.

Abaixo vemos o resultado para uma consulta:

Incluindo informações

Para incluir informações de um cliente temos que preencher os campos da página web informando o nome, telefone, endereço, email e observações. O valor para o campo codigo não precisa ser preenchido visto que o campo Id da tabela Clientes foi definido como do tipo Identity e será incrementando automaticamente.

Após informar os valores basta clicar no botão Incluir.

O código do evento Click deste botão chama o método Incluir() da classe ClienteBLL conforme a seguir:

        protected void btnIncluir_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txtNome.Text) || string.IsNullOrWhiteSpace(txtEndereco.Text))
            {
                Cliente _cliente = new Cliente();
                try
                {
                    _cliente.nome = txtNome.Text;
                    _cliente.endereco = txtEndereco.Text;
                    _cliente.telefone = txtTelefone.Text;
                    _cliente.email = txtEmail.Text;
                    _cliente.observacao = txtObservacao.Text;
                    _clienteBLL.Incluir(_cliente);
                }
                catch (Exception ex)
                {
                    lblmsg.Text = ex.Message;
                }
            }
            else
            {
                lblmsg.Text = "Informe o nome e o endereço...";
            }
        }

Primeiro criamos uma instância da classe Cliente para receber os valores informados nas caixas de texto da página e passamos o objeto _cliente para o método Incluir().

O método Incluir() define uma instrução SQL Insert Into para incluir as informações na tabela Clientes:

"INSERT INTO Clientes(Nome,Endereco,Telefone,Email,Observacao) values (@Nome,@Endereco,@Telefone,@Email,@Observacao)"

e chama o método CRUD da classe AcessoBD para efetivar a inclusão dos dados:

AcessoDB.CRUD(sql, parametrosNomes, parametrosValores)

Abaixo vemos um exemplo de execução bem sucedida:

Alterando Informações

Para alterar informações de um cliente temos localizar o cliente que desejamos alterar exibindo suas informações na página Default.aspx nas caixas de texto.

A seguir basta alterar o valor desejado, com exceção do campo código que não permite alteração, e clicar no botão Alterar.

O código do evento Click deste botão chama o método Alterar() da classe ClienteBLL conforme a seguir:

       protected void btnAlterar_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txtNome.Text) || string.IsNullOrWhiteSpace(txtEndereco.Text))
            {
                Cliente _cliente = new Cliente();
                try
                {
                    _cliente.Id = Convert.ToInt32(txtId.Text);
                    _cliente.nome = txtNome.Text;
                    _cliente.endereco = txtEndereco.Text;
                    _cliente.telefone = txtTelefone.Text;
                    _cliente.email = txtEmail.Text;
                    _cliente.observacao = txtObservacao.Text;
                    _clienteBLL.Alterar(_cliente);
                }
                catch (Exception ex)
                {
                    lblmsg.Text = ex.Message;
                }
            }
            else
            {
                lblmsg.Text = "Informe o nome e o endereço...";
            }
        }

Primeiro criamos uma instância da classe Cliente para receber os valores informados nas caixas de texto da página e passamos o objeto _cliente para o método Alterar().

O método Alterar() define uma instrução SQL Update Set para alterar as informações na tabela Clientes:

sql = "UPDATE Clientes SET Nome=@Nome, Endereco=@Endereco ,Telefone=@Telefone ,Email=@Email , Observacao=@Observacao Where Id=@Id"

e chama o método CRUD da classe AcessoBD para efetivar a inclusão dos dados:

AcessoDB.CRUD(sql, parametrosNomes, parametrosValores)

Abaixo vemos um exemplo de execução bem sucedida:

Excluindo informações

Para excluir informações de um cliente temos localizar o cliente que desejamos excluir exibindo suas informações na página Default.aspx nas caixas de texto.

A seguir basta e clicar no botão Excluir.

O código do evento Click deste botão chama o método Excluir() da classe ClienteBLL conforme a seguir:

        protected void btnExcluir_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtId.Text))
            {
                Cliente _cliente = new Cliente();
                try
                {
                    _cliente.Id = Convert.ToInt32(txtId.Text);
                    _clienteBLL.Excluir(_cliente);
                }
                catch (Exception ex)
                {
                    lblmsg.Text = ex.Message;
                }
            }
            else
            {
                lblmsg.Text = "Informe o Id do Aluno...";
            }
        }

Primeiro criamos uma instância da classe Cliente para receber os valores informados nas caixas de texto da página e passamos o objeto _cliente para o método Excluir().

Para excluir um cliente precisamos apenas do Id do cliente obtido do campo código na página Default.aspx em txtId.Text.

O método Excluir() define uma instrução SQL DELETE FROM para excluir as informações na tabela Clientes:

sql = "DELETE FROM Clientes Where Id=@Id"

e chama o método CRUD da classe AcessoBD para efetivar a inclusão dos dados:

AcessoDB.CRUD(sql, parametrosNomes, parametrosValores)

Abaixo vemos um exemplo de execução bem sucedida:

E assim concluímos a nossa aplicação ASP .NET construída usando uma arquitetura em camadas.

Podemos melhorar o projeto aplicando alguns padrões de projeto como o padrão repositório, usar o BootStrap para melhorar a aparência, usar o AngularJS para melhorar a experiência do usuário, mas isso fica como um exercício.

Pegue o projeto completo aqui : Aspnet3Camadas.zip (sem as referências)

"Porque a lei foi dada por Moisés; a graça e a verdade vieram por Jesus Cristo."
Joao 1:17

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti