.NET

11 jul, 2014

ASP .NET – Criando um projeto em 3 camadas – UI, BLL e DAL (revisão) – Parte 03

Publicidade

Na segunda parte deste artigo definimos as funcionalidades da camada de acesso a dados e da camada de negócios. Agora vamos concluir definindo a camada de apresentação.

A nossa camada de apresentação será um projeto ASP .NET Web Forms onde iremos apresentar e manter as informações de clientes.

Recursos usados:

  • Visual Studio Express 2012 for Web
  • SQL Server 2012 Local DB
  • ASP .NET Web Forms 4.5

Como o assunto do artigo já foi exaustivamente abordado, não vou me ater muito a certos detalhes para tornar o artigo mais simples e objetivo possível para aqueles que estão tendo o seu primeiro contato com um projeto em 3 camadas.

Definindo a estrutura da Camada de Apresentação – UI

Nossa camada de apresentação será bem simples e terá como objetivo mostrar como usar os recursos das camadas de negócio e da camada de acesso a dados.

Para tornar o código mais simples eu não vou me ater a validações, nem a um tratamento apurado de exceções – que é sempre um item obrigatório em uma aplicação de produção.

Vamos incluir um formulário web em nosso projeto Web Forms na camada UI. Selecione o projeto UI e clique em PROJECT e a seguir em Add New Item.

A seguir, selecione o template Web Form, informe o nome Default.aspx e clique no botão Add:

aspn_3cam32

Selecione o formulário Default.aspx e clique na guia Design. No menu TABLE clique em Insert Table e defina uma tabela com 12 linhas e 2 colunas:

aspn_3cam33

Agora, a partir da ToolBox, inclua o seguintes controles na página Default.aspx:

  • TextBox – txtId
  • TextBox – txtNome
  • TextBox – txtEndereco
  • TextBox – txtTelefone
  • TextBox – txtEmail
  • TextBox – txtObservacao
  • Button – btnLocalizar
  • Button – btnIncluir
  • Button – btnAltera
  • Button – btnExcluir
  • Button – btnSair
  • GridView – gvClientes
  • Label – lblmsg

Disponha os controles na página conforme a figura abaixo:

aspn_3cam31

Vamos executar o projeto Web para verificar a aparência da nossa página; mas antes precisamos definir o projeto de inicialização.

Clique com o botão direito sobre a solução na janela Solution Explorer e a seguir clique em Properties. Depois defina o Startup Project, conforme a figura abaixo:

aspn_3cam34

Executando o projeto teremos o seguinte resultado:

aspn_3cam36

A página web está sendo exibida sem nenhuma informação, pois ainda não implementamos o código para obter os dados do banco de dados.

Vamos fazer isso agora.

Exibindo informações na Camada de Interface  – UI

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:

Imports BLL
Imports DTO
Public Class _Default
    Inherits System.Web.UI.Page
    Dim _cliente As New ClienteBLL
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            gvClientes.DataSource = _cliente.ExibirTodos()
            gvClientes.DataBind()
        Catch ex As Exception
            lblmsg.Text = ex.Message
        End Try
    End Sub
End Class

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

Imports BLL 
Imports DTO

Para poder acessar os métodos da classe ClienteBLL, criamos uma instância da classe  :  Dim _cliente As New ClienteBLL.

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 aoGridView:

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

O resultado pode ser visto na figura abaixo:

aspn_3cam37

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 Código 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 Sub btnLocalizar_Click(sender As Object, e As EventArgs) Handles btnLocalizar.Click

        Dim _cliente As New Cliente
        Dim codigo As Integer = 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 ex As Exception
            lblmsg.Text = ex.Message
        End Try

    End Sub

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.

A seguir, atribuímos os valores do objeto cliente a cada caixa de texto respectiva ao dado desejado.

Abaixo vemos o resultado para uma consulta:

aspn_3cam38

Incluindo informações na Camada de Interface  – UI

Para incluir informações de um cliente, temos que preencher os campos da página web informando o nome, telefone, endereço, e-mail e observações. O valor para o campo código 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 Sub btnIncluir_Click(sender As Object, e As EventArgs) Handles btnIncluir.Click
        Dim _cliente As 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 ex As Exception
            lblmsg.Text = ex.Message
        End Try

    End Sub

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étodoIncluir(). 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:

aspn_3cam39

aspn_3cam3a

Alterando informações na Camada de Interface  – UI

Para alterar informações de um cliente temos que localizar o cliente que desejamos e 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 Sub btnAlterar_Click(sender As Object, e As EventArgs) Handles btnAlterar.Click
        Dim _cliente As 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 ex As Exception
            lblmsg.Text = ex.Message
        End Try

    End Sub

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étodoAlterar().

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:

aspn_3cam3b

aspn_3cam3c

Excluindo informações na Camada de Interface  – UI

Para excluir informações de um cliente, temos que localizar o cliente que desejamos excluir, exibindo suas informações na página Default.aspx nas caixas de texto. A seguir basta 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 Sub btnExcluir_Click(sender As Object, e As EventArgs) Handles btnExcluir.Click
        Dim _cliente As New Cliente
        Try
            _cliente.Id = Convert.ToInt32(txtId.Text)
            _clienteBLL.Excluir(_cliente)
        Catch ex As Exception
            lblmsg.Text = ex.Message
        End Try
    End Sub

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étodoExcluir().

Para excluir um cliente, precisamos apenas do Id dele 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:

aspn_3cam3d

aspn_3cam3e

Pegue o projeto completo aqui: ASPNET_3Camadas.zip