Escolar Documentos
Profissional Documentos
Cultura Documentos
Pesquisar
Desenvolvimento - C#
Guia prático para o desenvolvimento de Aplicações C# em
Camadas - parte 1
Este é o primeiro de uma série de artigos onde vamos demonstrar passo-a-passo a construção de uma aplicação .Net
utilizando o conceito de desenvolvimento em camadas. Nosso objetivo é permitir à você praticar o desenvolvimento de
uma aplicação real em .Net para que você adquira habilidades para a construção ou manutenção de aplicações mais
complexas.
17 4 4 37
1 - Introdução
·
Comunicação entre as camadas;
·
Vantagens do modelo de desenvolvimento em camadas;
·
Controle de transações do banco de dados com o ADO .Net;
·
Construção de uma aplicação para Windows;
·
Construção de uma aplicação para a Web;
·
A importância da segurança no desenvolvimento de
aplicações.
www.linhadecodigo.com.br/artigo/1898/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-1.aspx 1/4
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 1
·
Camada de acesso à dados ou Data Access Layer (DAL);
LINHA DE CÓDIGO LOGIN
·
Camada de regras de negócio ou Business Logic Layer (BLL);
e
·
Camada de interface do usuário ou User Interface (UI).
www.linhadecodigo.com.br/artigo/1898/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-1.aspx 2/4
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 1
·
Sistema Operacional: Microsoft Windows XP
Professional;
·
Banco de Dados: Microsoft SQL Server 2005;
·
Microsoft Visual Studio 2005 Professional
Edition.
MCP .Net, MCP SQL Server, Carlos Camacho leciona disciplinas técnicas na área de Ciências Exatas e
é Consultor em Tecnologia da Informação para Instituições Financeiras.
17 4 4 37
Leia também
Como criar botões em jogos SFML.NET
C#
Publicidade
www.linhadecodigo.com.br/artigo/1898/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-1.aspx 3/4
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 1
Linha de Código
www.linhadecodigo.com.br/artigo/1898/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-1.aspx 4/4
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
Pesquisar
Desenvolvimento - C#
Guia prático para o desenvolvimento de Aplicações C# em
Camadas - parte 2
Este é o segundo artigo da série onde vamos demonstrar passo-a-passo a construção de uma aplicação .Net utilizando
o conceito de desenvolvimento em camadas.
15 0 1 13
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 1/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 2/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 3/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
[NOME] [varchar]
(100) ,
[EMAIL]
[varchar] (100) ,
[TELEFONE]
[varchar] (80) ,
[CODIGO]
) ON [PRIMARY]
) ON [PRIMARY]
GO
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 4/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
insert
into clientes(nome,email,telefone)
values
("Carlos Camacho","c_olavo@hotmail.com","(11) 9999-5555")
Clique em Execute
para executar o comando de inserção:
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 5/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
Select * from
clientes
CREATE
TABLE [PRODUTOS] (
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 6/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
[CODIGO]
[int] IDENTITY (1, 1) NOT NULL ,
LINHA DE CÓDIGO LOGIN
[NOME] [varchar] (100) ,
[PRECO] decimal(10,2) ,
[ESTOQUE] [int] ,
[CODIGO]
) ON [PRIMARY]
) ON [PRIMARY]
GO
Com o script na janela de query, clique em Executar para criarmos a tabela de produtos.
Ué?! Depois que cliquei no Execute apareceu a mensagem “Command(s) completed successfully.”
Mas a
tabela PRODUTOS não apareceu em Tables... O que aconteceu?
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 7/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
- Copie o código abaixo na janela de query e clique em Execute para a inserção dos dois produtos.
insert
into produtos (nome, preco, estoque)
values
("Computador Pentium Dual Core","1500.00","15")
insert
into produtos (nome, preco, estoque)
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 8/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
values
("Impressora Deskjet HP","599.90","150")
LINHA DE CÓDIGO LOGIN
Vamos ver o resultado:
select * from
produtos
O resultado é esse:
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 9/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
[DATA] [datetime],
[QUANTIDADE]
[int],
[FATURADO]
bit,
[CODIGOCLIENTE] [int],
[CODIGOPRODUTO] [int],
[CODIGO]
) ON [PRIMARY],
[CODIGOCLIENTE]
)
REFERENCES [Clientes] (
[Codigo]
),
CONSTRAINT
[FK_Codigo_Produto] FOREIGN KEY
[CODIGOPRODUTO]
)
REFERENCES [Produtos] (
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 10/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
[Codigo]
LINHA DE CÓDIGO LOGIN
)
)
ON [PRIMARY]
GO
Vejamos o resultado:
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 11/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
1) a
inclusão na tabela de Vendas; e
2) a
atualização do estoque na tabela de Produtos.
referencial.
LINHA DE CÓDIGO LOGIN
Em outras palavras, não exisitirá na tabela de Vendas um
registro que tenha o código do produto vendido mas
que o estoque deste produto
na tabela de Produtos esteja desatualizado.
Observações:
·
Nome do servidor de banco de dados que estamos usando;
·
Nome do banco de dados onde as três tabelas foram criadas;
·
Nome do usuário e senha utilizados para acessar o banco de
dados.
Nome
do Servidor: MAQ-607567\SQLEXPRESS
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 13/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
Nome
do banco de dados: Loja
LINHA DE CÓDIGO LOGIN
Usuário:
camacho
Senha:
camacho2008a3
"server=MAQ-607567\SQLEXPRESS;database=Loja;user=camacho;pwd=camacho2008a3"
·
- Criar o servidor de banco de dados;
·
- Criar o banco de dados;
·
- Criar usuário e senha que terão acesso ao banco de dados.
MCP .Net, MCP SQL Server, Carlos Camacho leciona disciplinas técnicas na área de Ciências Exatas e
é Consultor em Tecnologia da Informação para Instituições Financeiras.
15 0 1 13
Leia também
Como criar botões em jogos SFML.NET
C#
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 14/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 2
LINHA DE CÓDIGO
Publicidade
LOGIN
Linha de Código
www.linhadecodigo.com.br/artigo/1899/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-2.aspx 15/15
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
Pesquisar
Desenvolvimento - C#
Guia prático para o desenvolvimento de Aplicações C# em
Camadas - parte 3
Este é o terceiro artigo da série onde vamos demonstrar passo-a-passo a construção de uma aplicação .Net utilizando o
conceito de desenvolvimento em camadas.
18 1 0 15
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 1/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
Dentro da camada DAL nós temos o projeto Modelos. Vamos criar esse projeto.
·
ClienteInformation.cs
·
ProdutoInformation.cs e
·
VendaInformation.cs
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 2/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
No
tipo de projeto selecione Visual C#;
No
tipo de template selecione Class Library;
No
Nome do projeto digite Modelos;
Na
localização do projeto digite C:\Loja;
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 3/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
Deixe
a opção “Create directory for solution” selecionada e clique em Ok para criar o projeto.
LINHA DE CÓDIGO LOGIN
Abrindo
o Windows Explorer, podemos ver que a pasta Loja
foi criada no drive C:
Dentro
da pasta Loja foi criada a pasta do projeto Modelos.
Ok,
agora vamos voltar para o MS Visual Studio.
Do
lado direito vemos a área do Solution Explorer.
-
Clique com o botão direito sobre o arquivo Class1.cs e escolha Rename para renomear a classe para
ClienteInformation.cs;
Ao
renomear o arquivo da classe, perceba que o nome da classe muda automaticamente
na janela de código
(public class
ClienteInformation).
-
Na janela de código à esquerda, inclua o nome do nosso projeto (Loja) no
namespace, de maneira que o
namespace fique Loja.Modelos
como na figura abaixo:
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 4/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
{
}
{
}
{
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 5/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
}
{
}
Na
implementação da classe ClienteInformation vemos que estamos definindo
campos e propriedades para
cada campo da tabela de Clientes que criamos no
banco de dados.
Agora
a codificação da classe ClienteInformation está completa como na listagem a
seguir:
using System;
using
System.Collections.Generic;
using System.Text;
namespace Loja.Modelos
public
class ClienteInformation
{
{
}
{
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 6/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
}
{
}
{
}
}
Clique com o botão direito sobre o projeto Modelos e então escolha Add.
Em seguida escolha New Item...
como na figura abaixo:
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 7/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 8/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
namespace
Loja.Modelos
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 9/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
set { _estoque =
value; }
using System;
using System.Collections.Generic;
using System.Text;
namespace Loja.Modelos
public
class ProdutoInformation
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 10/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
{
LINHA DE CÓDIGO LOGIN
get { return _nome; }
get { return
_estoque; }
Clique com o botão direito sobre o projeto Modelos e então escolha Add.
Em seguida escolha New Item...
como na figura abaixo:
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 11/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 12/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
namespace
Loja.Modelos
set { _data =
value; }
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 14/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
}
LINHA DE CÓDIGO LOGIN
O código completo da nossa classe VendaInformation.cs
ficará assim:
using System;
using
System.Collections.Generic;
using System.Text;
namespace Loja.Modelos
public
class VendaInformation
private DateTime
_data;
set {
_quantidade = value; }
private bool
_faturado;
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 15/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
private int
_codigoCliente;
public int
CodigoCliente
get { return
_codigoCliente; }
set {
_codigoProduto = value; }
private string
_nomeCliente;
public string
NomeCliente
get { return
_nomeCliente; }
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 16/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 17/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 18/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
Na janela Add New Item, escolha o template Class Diagram. Digite Modelos.cd no nome e clique em Add
para criar o nosso diagrama de classes como a seguir.
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 19/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 20/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
Até breve!
MCP .Net, MCP SQL Server, Carlos Camacho leciona disciplinas técnicas na área de Ciências Exatas e
é Consultor em Tecnologia da Informação para Instituições Financeiras.
18 1 0 15
Leia também
Como criar botões em jogos SFML.NET
C#
Publicidade
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 21/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 3
Linha de Código
www.linhadecodigo.com.br/artigo/1900/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-3.aspx 22/22
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
Pesquisar
Desenvolvimento - C#
Guia prático para o desenvolvimento de Aplicações C# em
Camadas - parte 4
Este é o quarto artigo da série onde vamos demonstrar passo-a-passo a construção de uma aplicação .Net utilizando o
conceito de desenvolvimento em camadas.
4 16 2 15
Criaremos as classes:
·
ClientesDAL.cs
·
ProdutosDAL.cs
·
VendasDAL.cs
·
Dados.cs
- Vamos adicionar um novo projeto. No menu File do Visual Studio, clique em Add > New Project...
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 1/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
- Escolha Visual C#
para o tipo de projeto;
- Class Library
para o template;
- Digite DAL
no campo nome;
- Digite C:\Loja\DAL
na localização;
- Clique em Ok
para adicionar o novo projeto à nossa Solution (solução).
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 2/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 3/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 4/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
[Modelos] DAL ð
BLL ð User Interface
Em termos de programação, dizemos que o projeto DAL faz referência ao projeto Modelos. Para que o nosso
projeto DAL consiga ver o que já construímos no projeto Modelos, vamos criar
essa referência.
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 5/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
Add Reference...
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 6/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 7/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 8/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 9/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 10/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 11/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
//conexao
try
cn.ConnectionString =
Dados.StringDeConexao;
//command
cmd.Connection = cn;
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 12/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
cmd.Parameters.AddWithValue
("@nome", cliente.Nome );
LINHA DE CÓDIGO LOGIN
cmd.Parameters.AddWithValue("@email",
cliente.Email);
cmd.Parameters.AddWithValue("@telefone",
cliente.Telefone);
cn.Open();
cliente.Codigo = Convert.ToInt32
(cmd.ExecuteScalar());
finally
cn.Close();
// conexao
try
cn.ConnectionString =
Dados.StringDeConexao;
cmd.Connection = cn;
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 13/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
cmd.CommandType = CommandType.Text;
LINHA DE CÓDIGO LOGIN
cmd.CommandText = "update Clientes set
nome = @nome, email = @email, telefone = @telefone where codigo
=
@codigo;";
cmd.Parameters.AddWithValue("@codigo",
cliente.Codigo);
cmd.Parameters.AddWithValue("@nome", cliente.Nome);
cmd.Parameters.AddWithValue("@email", cliente.Email);
cmd.Parameters.AddWithValue("@telefone",
cliente.Telefone);
cn.Open();
cmd.ExecuteNonQuery();
finally
cn.Close();
//conexao
try
{
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 14/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
cn.ConnectionString =
Dados.StringDeConexao;
LINHA DE CÓDIGO LOGIN
//command
cmd.Connection = cn;
cn.Open();
if
(resultado!=1) {
finally
cn.Close();
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 15/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
da.Fill (tabela);
LINHA DE CÓDIGO LOGIN
return tabela;
using System;
using
System.Collections.Generic;
using System.Text;
using Loja.Modelos;
using
System.Data.SqlClient;
namespace Loja.DAL
public
class ClientesDAL
//conexao
SqlConnection cn = new
SqlConnection();
try
cn.ConnectionString = Dados.StringDeConexao;
//command
cmd.Connection = cn;
cmd.Parameters.AddWithValue("@nome", cliente.Nome);
cmd.Parameters.AddWithValue("@email", cliente.Email);
cmd.Parameters.AddWithValue("@telefone", cliente.Telefone);
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 16/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
cn.Open();
LINHA DE CÓDIGO LOGIN
cliente.Codigo = Convert.ToInt32(cmd.ExecuteScalar());
catch (SqlException
ex)
finally
cn.Close();
// conexao
SqlConnection cn = new
SqlConnection();
try
cn.ConnectionString = Dados.StringDeConexao;
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@codigo", cliente.Codigo);
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 17/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
cmd.Parameters.AddWithValue("@nome", cliente.Nome);
LINHA DE CÓDIGO LOGIN
cmd.Parameters.AddWithValue("@email", cliente.Email);
cmd.Parameters.AddWithValue("@telefone", cliente.Telefone);
cn.Open();
cmd.ExecuteNonQuery();
catch (SqlException
ex)
finally
cn.Close();
//conexao
SqlConnection cn = new
SqlConnection();
try
cn.ConnectionString = Dados.StringDeConexao;
//command
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 18/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
cmd.Connection = cn;
LINHA DE CÓDIGO LOGIN
cmd.CommandText = "delete from Clientes where codigo
= " + codigo;
cn.Open();
if (resultado != 1)
throw
new Exception("Não foi possível excluir o cliente " +
codigo);
finally
cn.Close();
SqlDataAdapter
da = new SqlDataAdapter("select * from clientes",
Dados.StringDeConexao);
da.Fill(tabela);
return
tabela;
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 19/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
}
LINHA DE CÓDIGO LOGIN
}
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 20/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
Agora dê um Build
novamente no projeto DAL para verificarmos o resultado:
- Clique com o botão direito no projeto DAL e selecione Add > New Item...
- Na janela que se abrirá, vamos escolher o template Class e dar o nome de Dados.cs.
Clique no botão Add
para adicionar a nova classe ao projeto:
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 21/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
public
static string StringDeConexao
get
Return "server=MAQ-607567\\SQLEXPRESS;database=Loja;user=camacho;pwd=camacho2008a3";
Importante:
O conteúdo que você colocar entre as aspas do return deverá ser a sua string de
conexão. Os
dados da sua string de conexão foram definidos no artigo 2 que trata
da criação da infra-estrutura de banco de
dados.
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 22/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
using System;
using
System.Collections.Generic;
using System.Text;
namespace Loja.DAL
class
Dados
get
return
"Use a sua string de conexão aqui.";
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 23/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
- Clique com o botão direito no projeto DAL, Add > New Item...
using System;
using
System.Collections.Generic;
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 24/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
using System.Text;
LINHA DE CÓDIGO LOGIN
using System.Data;
using
System.Data.SqlClient;
using
System.Collections;
using Loja.Modelos;
namespace Loja.DAL
public
class ProdutosDAL
public ArrayList
ProdutosEmFalta()
SqlConnection cn = new
SqlConnection(Dados.StringDeConexao);
cn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
ProdutoInformation
produto = new ProdutoInformation();
produto.Codigo = Convert.ToInt32(dr["codigo"]);
produto.Nome = dr["nome"].ToString();
produto.Estoque = Convert.ToInt32(dr["estoque"]);
produto.Preco = Convert.ToDecimal(dr["preco"]);
lista.Add(produto);
dr.Close();
cn.Close();
return lista;
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 25/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
}
LINHA DE CÓDIGO LOGIN
public void Incluir(ProdutoInformation produto)
//conexao
SqlConnection cn = new
SqlConnection();
try
cn.ConnectionString = Dados.StringDeConexao;
//command
cmd.Connection = cn;
cmd.Parameters.AddWithValue("@nome", produto.Nome);
cmd.Parameters.AddWithValue("@preco", produto.Preco);
cmd.Parameters.AddWithValue("@estoque", produto.Estoque);
cn.Open();
produto.Codigo = Convert.ToInt32(cmd.ExecuteScalar());
catch (SqlException
ex)
finally
{
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 26/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
cn.Close();
LINHA DE CÓDIGO LOGIN
}
//conexao
SqlConnection cn = new
SqlConnection();
try
cn.ConnectionString = Dados.StringDeConexao;
//command
cmd.Connection = cn;
cmd.CommandText = "AlterarProduto";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@codigo",
produto.Codigo);
cmd.Parameters.AddWithValue("@nome", produto.Nome);
cmd.Parameters.AddWithValue("@preco", produto.Preco);
cmd.Parameters.AddWithValue("@estoque", produto.Estoque);
cmd.Parameters.Add("@valorEstoque", SqlDbType.Int);
cmd.Parameters["@valorEstoque"].Direction = ParameterDirection.Output;
cn.Open();
cmd.ExecuteNonQuery();
decimal
valorEstoque = Convert.ToDecimal(cmd.Parameters["@valorEstoque"]);
if (valorEstoque
< 500)
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 27/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
}
LINHA DE CÓDIGO LOGIN
catch (SqlException
ex)
finally
cn.Close();
public DataTable
Listagem()
da.Fill(tabela);
return
tabela;
- Clique com o botão direito no projeto DAL, Add > New Item...
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 28/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
using System;
using
System.Collections.Generic;
using System.Text;
using System.Data;
using
System.Data.SqlClient;
using Loja.Modelos;
using Loja.DAL;
namespace Loja.DAL
public
class VendasDAL
public DataTable
ListaDeProdutos
get
SqlConnection cn = new
SqlConnection();
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 29/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
cn.ConnectionString = Dados.StringDeConexao;
LINHA DE CÓDIGO LOGIN
cn.Open();
SqlDataAdapter da = new
SqlDataAdapter("select
* from produtos", cn);
da.Fill(dt);
cn.Close();
return dt;
//Propriedade que
retorna uma Lista de Clientes
public DataTable
ListaDeClientes
get
SqlConnection cn = new
SqlConnection();
cn.ConnectionString = Dados.StringDeConexao;
cn.Open();
SqlDataAdapter da = new
SqlDataAdapter("select
* from clientes", cn);
da.Fill(dt);
cn.Close();
return dt;
//conexao
SqlConnection cn = new
SqlConnection();
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 30/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
SqlTransaction t = null;
LINHA DE CÓDIGO LOGIN
try
cn.ConnectionString = Dados.StringDeConexao;
//command
cmd1.Connection = cn;
(CodigoCliente,
CodigoProduto,
Data,
Quantidade,
Faturado)
VALUES
(@CodigoCliente,
@CodigoProduto,
@Data,
@Quantidade,
@Faturado);select @@IDENTITY;";
cmd2.Connection = cn;
Where Codigo=@CodigoProduto";
cn.Open();
t =
cn.BeginTransaction(IsolationLevel.Serializable);//default
cmd1.Transaction = t;
cmd2.Transaction
= t;
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 31/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
cmd1.Parameters.AddWithValue("@codigocliente", venda.CodigoCliente);
LINHA DE CÓDIGO LOGIN
cmd1.Parameters.AddWithValue("@codigoproduto", venda.CodigoProduto);
cmd1.Parameters.AddWithValue("@data", venda.Data);
cmd1.Parameters.AddWithValue("@quantidade", venda.Quantidade);
cmd1.Parameters.AddWithValue("@faturado", venda.Faturado);
cmd2.Parameters.AddWithValue("@quantidade", venda.Quantidade);
cmd2.Parameters.AddWithValue("@codigoproduto", venda.CodigoProduto);
venda.Codigo = Convert.ToInt32(cmd1.ExecuteScalar());
cmd2.ExecuteNonQuery();
t.Commit();
t.Rollback();
finally
cn.Close();
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 32/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
·
No método Inserir da classe VendasDAL estamos usando uma
transação. A inserçaõ de uma venda só vai
ocorrer se dois comandos forem
concluídos com sucesso: a inserção na tabela de vendas e a atualização do
estoque do produto.
·
Quando criamos a nossa classe Dados usamos a palavra static.
Com isso nós não precisamos instanciar um
objeto para ter acesso a propriedade StringDeConexao.
Se você precisar criar uma propriedade deste tipo no
VB .Net, pode usar a
sintaxe: Public Shared ReadOnly Property
·
Se você abrir o projeto DAL no Windows Explorer, poderá
verificar que na pasta de DLLs do projeto existem
dois arquivos com a extensão
DLL. Um do próprio projeto DAL e outro para a referência que fizemos ao projeto
Modelos.
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 33/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
MCP .Net, MCP SQL Server, Carlos Camacho leciona disciplinas técnicas na área de Ciências Exatas e
é Consultor em Tecnologia da Informação para Instituições Financeiras.
4 16 2 15
Leia também
Como criar botões em jogos SFML.NET
C#
Publicidade
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 34/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 4
Linha de Código
www.linhadecodigo.com.br/artigo/1906/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-4.aspx 35/35
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
Pesquisar
Desenvolvimento - C#
Guia prático para o desenvolvimento de Aplicações C# em
Camadas - parte 5
Este é o quinto artigo da série onde vamos demonstrar passo-a-passo a construção de uma aplicação .Net utilizando o
conceito de desenvolvimento em camadas.
3 0 0 6
Criaremos as classes:
·
ClientesBLL.cs
·
ProdutosBLL.cs
·
VendasBLL.cs
1.1) O nome do
cliente é obrigatório;
1.2) O e-mail do
cliente será armazenado em letras minúsculas;
2.1) O nome do
produto é obrigatório;
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 2/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
- Clique com o botão direito na Solution Loja e escolha Add > New Project...
LINHA DE CÓDIGO LOGIN
Project
type: Visual C#
Template:
Class Library
Name:
BLL
Location:
C:\Loja\BLL
- Clique em Ok
para adicionar o projeto.
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 3/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
[Modelos]
DAL ð BLL ð
User Interface
-
Clique com o botão direito na pasta References do projeto BLL e escolha Add Reference...
-
Na janela “Add Reference”, clique na aba Projects;
-
Mantenha a tecla <CTRL> pressionada e clique sobre os projetos DAL e
Modelos para selecionálos;
-
Clique em Ok para adicionar as
referências.
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 4/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 5/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
using System;
using System.Data;
using Loja.Modelos;
using Loja.DAL;
namespace Loja.BLL
{
public void Incluir(ClienteInformation cliente)
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 6/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
{
LINHA DE CÓDIGO LOGIN
//O nome do cliente é obrigatório
if (cliente.Nome.Trim().Length == 0)
{
throw new Exception("O nome do cliente é obrigatório");
}
//E-mail é sempre em letras minúsculas
cliente.Email = cliente.Email.ToLower();
ClientesDAL obj = new ClientesDAL();
obj.Incluir(cliente);
}
public void Alterar(ClienteInformation cliente)
{
ClientesDAL obj = new ClientesDAL();
obj.Alterar(cliente);
}
public void Excluir(int codigo)
{
if (codigo < 1)
{
throw new Exception("Selecione um cliente antes de excluí-lo.");
}
ClientesDAL obj = new ClientesDAL();
obj.Excluir(codigo);
}
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 7/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
{
LINHA DE CÓDIGO LOGIN
ClientesDAL obj = new ClientesDAL();
return
obj.Listagem();
}
}
- Dê um Build
no projeto BLL para confirmar a inexistência de erros na codificação:
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 8/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using Loja.Modelos;
using Loja.DAL;
namespace Loja.BLL
{
{
}
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 9/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
// Nome do produto é obrigatório
if (produto.Nome.Trim().Length == 0)
{
throw new Exception("O nome do produto é obrigatório.");
}
// O preço do produto não pode ser negativo
if (produto.Preco < 0)
{
throw new Exception("Preço do produto não pode ser negativo.");
}
// O estoque do produto não pode ser negativo
if (produto.Estoque < 0)
{
throw new Exception("Estoque do produto não pode ser negativo.");
}
//Se tudo estiver ok, chama a rotina de gravação
ProdutosDAL obj = new ProdutosDAL();
obj.Incluir(produto);
}
public void Alterar(ProdutoInformation produto)
{
ProdutosDAL obj = new ProdutosDAL();
obj.Alterar(produto);
}
public void Excluir(int codigo)
{
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 10/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
ProdutosDAL obj = new ProdutosDAL();
LINHA DE CÓDIGO LOGIN
obj.Excluir(codigo);
}
{
}
}
- Dê um Build
no projeto BLL para confirmar a inexistência de erros na codificação:
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 11/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Loja.DAL;
using Loja.Modelos;
namespace Loja.BLL
{
//Este é um campo privado para armazenar uma instância da classe DAL.
private VendasDAL objDAL;
//Esse é o construtor da classe VendasBLL
public VendasBLL()
{
objDAL = new VendasDAL();
}
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 12/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
public DataTable ListaDeProdutos
LINHA DE CÓDIGO LOGIN
{
get
{
return objDAL.ListaDeProdutos;
}
}
public DataTable ListaDeClientes
{
get
{
return objDAL.ListaDeClientes;
}
}
public void Incluir(VendaInformation venda)
{
objDAL.Incluir(venda);
}
}
- Dê um Build
no projeto BLL para confirmar a inexistência de erros na codificação:
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 13/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
[Modelos]
DAL ð BLL
ð User Interface
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 14/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
LINHA Carlos
DE CÓDIGO LOGIN
Camacho - Carlos Olavo de Azevedo Camacho Júnior é mestrando em Tecnologia
s da Inteligência e Design Digital pela Pontifícia Universidade Católica de São Paulo PUC
SP. Pós-graduado em Análise e Projeto de Sistemas pela Universidade Paulista UNIP. Ba
charel em Ciência da Computação pela Universidade Paulista UNIP e possui Licenciatura
Plena em Matemática pelas Faculdades Oswaldo Cruz.
MCP .Net, MCP SQL Server, Carlos Camacho leciona disciplinas técnicas na área de Ciências Exatas e
é Consultor em Tecnologia da Informação para Instituições Financeiras.
3 0 0 6
Leia também
Como criar botões em jogos SFML.NET
C#
Publicidade
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 15/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 5
Linha de Código
www.linhadecodigo.com.br/artigo/1910/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-5.aspx 16/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
Pesquisar
Desenvolvimento - C#
Guia prático para o desenvolvimento de Aplicações C# em
Camadas - parte 6
Este é o sexto artigo da série onde vamos demonstrar passo-a-passo a construção de uma aplicação .Net utilizando o
conceito de desenvolvimento em camadas.
32 0 2 21
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 1/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
- Clique com o botão direito na Solution Loja e escolha Add > New Project...
- Clique em Ok
para adicionar o projeto.
-
Clique com o botão direito na pasta References do projeto BLL e escolha Add Reference...
-
Na janela “Add Reference”, clique na aba Projects;
-
Mantenha a tecla <CTRL> pressionada e clique sobre os projetos DAL,
Modelos e BLL para selecionálos;
-
Clique em Ok para adicionar as
referências.
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 3/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 4/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
1) Utilizar
a combinação de teclas <Ctrl>
+ <Alt> + X ou
2) Utilizar
o menu View > Toolbox
- Para criar o nosso menu, arraste o componente MenuStrip para o formulário Form1.
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 5/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 6/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 7/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
Application.Exit();
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 8/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 9/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 10/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 11/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
·
Clientes;
·
Produtos;
·
Vendas;
·
Produtos em Falta.
- Clique com o botão direito sobre o projeto UIWindows e escolha Add > Windows Form...
- Na janela “Add New Item”, selecione o template Windows Form e nomeie o novo formulário como
ClientesForm.cs
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 12/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
- Clique em Add
para adicionar o formulário.
LINHA DE CÓDIGO LOGIN
Name: codigoLabel
Location: 16;32
Text: Código:
Name: nomeLabel
Location: 16;64
Text: Nome:
Name: emailLabel
Location: 16;96
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 13/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
LINHA
Text: E-mail: DE CÓDIGO LOGIN
Name: telefoneLabel
Location: 16;128
Text: Telefone:
Name: codigoTextBox
Enable: False
Location: 110;29
ReadOnly: True
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 14/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
Size: 70;20
LINHA DE CÓDIGO LOGIN
Name: nomeTextBox
Location: 110;61
Size: 200;20
Name: emailTextBox
Location: 110;93
Size: 200;20
Name: telefoneTextBox
Location: 110;125
Size: 200;20
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 15/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
Name: limparButton
Location: 110;159
Size: 75;23
Text: Limpar
Name: incluirButton
Location: 191;159
Size: 75;23
Text: Incluir
Name: alterarButton
Location: 272;159
Size: 75;23
Text: Alterar
Name: excluirButton
Location: 353;159
Size: 75;23
Text: Excluir
Name: lerButton
Size: 75;23
Text: Ler
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 16/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
Anchor: Top,
Bottom, Left, Right
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 17/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
using System;
using
System.Collections.Generic;
using
System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using
System.Windows.Forms;
using Loja.BLL;
namespace Loja.UIWindows
public
partial class ClientesForm : Form
{
public
ClientesForm()
{
InitializeComponent();
}
{
// Comunicação
com a Camada BLL
clientesDataGridView.DataSource = obj.Listagem();
// Atualizando
os objetos TextBox
codigoTextBox.Text = clientesDataGridView[0,
clientesDataGridView.CurrentRow.Index].Value.ToString();
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 18/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
nomeTextBox.Text
= clientesDataGridView[1,
clientesDataGridView.CurrentRow.Index].Value.ToString();
LINHA DE CÓDIGO LOGIN
emailTextBox.Text
= clientesDataGridView[2,
clientesDataGridView.CurrentRow.Index].Value.ToString();
telefoneTextBox.Text = clientesDataGridView[3,
clientesDataGridView.CurrentRow.Index].Value.ToString();
}
{
AtualizaGrid();
nomeTextBox.Focus();
}
}
- Abra o Form1
em modo de design e clique sobre o Menu
para que possamos ver as opções existentes:
- Dê um duplo clique
sobre a opção Clientes
para codificarmos a chamada para o formulário correspondente.
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 19/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
obj.MdiParent = this;
LINHA DE CÓDIGO LOGIN
obj.Show();
using System;
using
System.Collections.Generic;
using
System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Loja.UIWindows
public
partial class Form1 : Form
{
{
InitializeComponent();
}
{
Application.Exit();
}
{
obj.Show();
}
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 20/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
}
LINHA DE CÓDIGO LOGIN
}
- Dê um “Start Debugging”
clicando na seta verde da barra de botões conforme indicado abaixo. Essa opção
compila o projeto e, se tudo estiver certo, já executa a nossa aplicação
exibindo o menu principal.
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 21/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
- Dê um duplo clique
no botão Limpar para codificarmos
o evento click;
codigoTextBox.Text = "";
nomeTextBox.Text
= "";
emailTextBox.Text = "";
telefoneTextBox.Text = "";
- Dê um duplo clique
no botão Incluir para codificarmos
o evento click;
try
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 22/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
{
LINHA DE CÓDIGO LOGIN
ClienteInformation cliente = new
ClienteInformation();
cliente.Nome =
nomeTextBox.Text;
cliente.Email
= emailTextBox.Text;
cliente.Telefone = telefoneTextBox.Text;
obj.Incluir(cliente);
MessageBox.Show("O
cliente foi incluído com sucesso!");
codigoTextBox.Text
= Convert.ToString(cliente.Codigo);
AtualizaGrid();
}
{
MessageBox.Show("Erro:
" + ex.Message);
}
- Dê um duplo clique
no botão Alterar para codificarmos
o evento click;
if (codigoTextBox.Text.Length == 0)
{
MessageBox.Show("Um
cliente deve ser selecionado para alteração.");
}
else
try
{
ClienteInformation cliente = new ClienteInformation();
cliente.Codigo
= int.Parse(codigoTextBox.Text);
cliente.Nome = nomeTextBox.Text;
cliente.Email
= emailTextBox.Text;
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 23/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
cliente.Telefone = telefoneTextBox.Text;
LINHA DE CÓDIGO LOGIN
ClientesBLL obj = new ClientesBLL();
obj.Alterar(cliente);
MessageBox.Show("O
cliente foi alterado com sucesso!");
AtualizaGrid();
}
{
MessageBox.Show("Erro:
" + ex.Message);
}
- Dê um duplo clique
no botão Excluir para codificarmos
o evento click;
if (codigoTextBox.Text.Length == 0)
{
MessageBox.Show("Um
cliente deve ser selecionado antes da exclusão.");
}
else
try
{
int codigo = Convert.ToInt32(codigoTextBox.Text);
ClientesBLL obj = new ClientesBLL();
obj.Excluir(codigo);
MessageBox.Show("O
cliente foi excluído com sucesso!");
AtualizaGrid();
}
{
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 24/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
MessageBox.Show(ex.Message);
LINHA DE CÓDIGO LOGIN
}
- Dê um duplo clique
no botão Ler para codificarmos
o evento click;
AtualizaGrid();
codigoTextBox.Text
= clientesDataGridView[0,
clientesDataGridView.CurrentRow.Index].Value.ToString();
nomeTextBox.Text = clientesDataGridView[1,
clientesDataGridView.CurrentRow.Index].Value.ToString();
emailTextBox.Text
= clientesDataGridView[2,
clientesDataGridView.CurrentRow.Index].Value.ToString();
telefoneTextBox.Text = clientesDataGridView[3,
clientesDataGridView.CurrentRow.Index].Value.ToString();
/*
* File...:
ClientesForm.cs
* Author.:
Carlos Camacho - www.camachojunior.com.br
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 25/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
* Content:
Formulário de Clientes
LINHA DE CÓDIGO LOGIN
* Subject: Guia
prático para o desenvolvimento de Aplicações C# em Camadas
*/
using System;
using
System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using
System.Windows.Forms;
using Loja.BLL;
using Loja.DAL;
using Loja.Modelos;
namespace Loja.UIWindows
{
{
InitializeComponent();
}
{
clientesDataGridView.DataSource = obj.Listagem();
// Atualizando
os objetos TextBox
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 26/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
codigoTextBox.Text = clientesDataGridView[0,
clientesDataGridView.CurrentRow.Index].Value.ToString();
LINHA DE CÓDIGO LOGIN
nomeTextBox.Text = clientesDataGridView[1,
clientesDataGridView.CurrentRow.Index].Value.ToString();
emailTextBox.Text
= clientesDataGridView[2,
clientesDataGridView.CurrentRow.Index].Value.ToString();
telefoneTextBox.Text = clientesDataGridView[3,
clientesDataGridView.CurrentRow.Index].Value.ToString();
}
{
AtualizaGrid();
nomeTextBox.Focus();
}
{
codigoTextBox.Text
= "";
nomeTextBox.Text = "";
emailTextBox.Text = "";
telefoneTextBox.Text = "";
}
{
try
{
cliente.Nome =
nomeTextBox.Text;
cliente.Email
= emailTextBox.Text;
cliente.Telefone = telefoneTextBox.Text;
obj.Incluir(cliente);
MessageBox.Show("O
cliente foi incluído com sucesso!");
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 27/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
codigoTextBox.Text = Convert.ToString(cliente.Codigo);
LINHA DE CÓDIGO LOGIN
AtualizaGrid();
}
{
MessageBox.Show("Erro:
" + ex.Message);
}
}
{
if (codigoTextBox.Text.Length == 0)
{
MessageBox.Show("Um
cliente deve ser selecionado para alteração.");
}
else
try
{
ClienteInformation cliente = new ClienteInformation();
cliente.Nome = nomeTextBox.Text;
cliente.Email
= emailTextBox.Text;
cliente.Telefone = telefoneTextBox.Text;
obj.Alterar(cliente);
MessageBox.Show("O
cliente foi alterado com sucesso!");
AtualizaGrid();
}
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 28/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
{
LINHA DE CÓDIGO LOGIN
MessageBox.Show("Erro:
" + ex.Message);
}
}
{
if (codigoTextBox.Text.Length == 0)
{
MessageBox.Show("Um
cliente deve ser selecionado antes da exclusão.");
}
else
try
{
int codigo = Convert.ToInt32(codigoTextBox.Text);
ClientesBLL obj = new ClientesBLL();
obj.Excluir(codigo);
MessageBox.Show("O
cliente foi excluído com sucesso!");
AtualizaGrid();
}
{
MessageBox.Show(ex.Message);
}
}
{
AtualizaGrid();
}
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 29/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
codigoTextBox.Text = clientesDataGridView[0,
clientesDataGridView.CurrentRow.Index].Value.ToString();
nomeTextBox.Text = clientesDataGridView[1,
clientesDataGridView.CurrentRow.Index].Value.ToString();
emailTextBox.Text
= clientesDataGridView[2,
clientesDataGridView.CurrentRow.Index].Value.ToString();
telefoneTextBox.Text = clientesDataGridView[3,
clientesDataGridView.CurrentRow.Index].Value.ToString();
}
}
MCP .Net, MCP SQL Server, Carlos Camacho leciona disciplinas técnicas na área de Ciências Exatas e
é Consultor em Tecnologia da Informação para Instituições Financeiras.
32 0 2 21
Leia também
Como criar botões em jogos SFML.NET
C#
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 30/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 6
Publicidade
Linha de Código
www.linhadecodigo.com.br/artigo/1915/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-6.aspx 31/31
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
Pesquisar
Desenvolvimento - C#
Guia prático para o desenvolvimento de Aplicações C# em
Camadas - parte 7
Este é o sétimo artigo da série onde vamos demonstrar passo-a-passo a construção de uma aplicação .Net utilizando o
conceito de desenvolvimento em camadas.
5 0 0 6
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 1/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
- Clique em Add
para adicionar o formulário.
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 2/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
- Digite <Ctrl>
+ <C> para copiar os
objetos para a área de transferência;
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 3/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
- No objeto emailLabel
altere os valores das seguintes propriedades:
Name: precoLabel
Text: Preço:
- No objeto emailTextBox
altere a propriedade Name
para precoTextBox
Name: estoqueTextBox
Text: Estoque:
- No objeto telefoneTextBox
altere a propriedade Name
para estoqueTextBox
- No objeto clientesDataGridView
altere a propriedade Name
para produtosDataGridView
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 4/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
/*
* File...: ProdutosForm.cs
*/
using System;
using
System.Collections.Generic;
using
System.ComponentModel;
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 5/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
using System.Data;
LINHA DE CÓDIGO LOGIN
using System.Drawing;
using System.Text;
using
System.Windows.Forms;
using Loja.BLL;
using Loja.DAL;
using Loja.Modelos;
namespace Loja.UIWindows
public
partial class ProdutosForm : Form
{
public
ProdutosForm()
{
InitializeComponent();
}
{
// Comunicação
com a Camada BLL
ProdutosBLL
obj = new ProdutosBLL();
produtosDataGridView.DataSource =
obj.Listagem();
// Atualizando
os objetos TextBox
codigoTextBox.Text =
produtosDataGridView[0,
produtosDataGridView.CurrentRow.Index].Value.ToString();
nomeTextBox.Text =
produtosDataGridView[1,
produtosDataGridView.CurrentRow.Index].Value.ToString();
precoTextBox.Text =
produtosDataGridView[2,
produtosDataGridView.CurrentRow.Index].Value.ToString();
estoqueTextBox.Text =
produtosDataGridView[3,
produtosDataGridView.CurrentRow.Index].Value.ToString();
}
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 6/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
AtualizaGrid();
nomeTextBox.Focus();
}
}
- Dê um duplo clique
no botão Limpar para codificarmos
o evento click;
codigoTextBox.Text = "";
nomeTextBox.Text
= "";
precoTextBox.Text
= "";
estoqueTextBox.Text = "";
- Dê um duplo clique
no botão Incluir para codificarmos
o evento click;
try
{
produto.Nome =
nomeTextBox.Text;
produto.Preco = Convert.ToDecimal(precoTextBox.Text);
produto.Estoque = Convert.ToInt32(estoqueTextBox.Text);
obj.Incluir(produto);
MessageBox.Show("O
produto foi incluído com sucesso!");
codigoTextBox.Text = Convert.ToString(produto.Codigo);
}
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 7/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
{
LINHA DE CÓDIGO LOGIN
MessageBox.Show("Erro:
" + ex.Message);
}
AtualizaGrid();
- Dê um duplo clique
no botão Alterar para codificarmos
o evento click;
{
MessageBox.Show("Um
produto precisa ser selecionado para alteração.");
}
else
try
{
ProdutoInformation produto = new ProdutoInformation();
produto.Codigo
= int.Parse(codigoTextBox.Text);
produto.Nome = nomeTextBox.Text;
produto.Preco = Convert.ToDecimal(precoTextBox.Text);
produto.Estoque = Convert.ToInt32(estoqueTextBox.Text);
obj.Alterar(produto);
MessageBox.Show("O
produto foi atualizado com sucesso!");
}
{
MessageBox.Show("Erro:
" + ex.Message);
}
AtualizaGrid();
- Dê um duplo clique
no botão Excluir para codificarmos
o evento click;
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 8/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
{
MessageBox.Show("Um
produto deve ser selecionado antes da exclusão.");
}
else
try
{
int codigo = Convert.ToInt32(codigoTextBox.Text);
ProdutosBLL obj = new ProdutosBLL();
obj.Excluir(codigo);
MessageBox.Show("O
produto foi excluído com sucesso!");
AtualizaGrid();
}
{
MessageBox.Show(ex.Message);
}
AtualizaGrid();
- Dê um duplo clique
no botão Ler para codificarmos
o evento click;
AtualizaGrid();
codigoTextBox.Text = produtosDataGridView[0,
produtosDataGridView.CurrentRow.Index].Value.ToString();
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 9/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
nomeTextBox.Text
= produtosDataGridView[1,
LINHA DE CÓDIGO
produtosDataGridView.CurrentRow.Index].Value.ToString();
LOGIN
precoTextBox.Text
= produtosDataGridView[2,
produtosDataGridView.CurrentRow.Index].Value.ToString();
estoqueTextBox.Text = produtosDataGridView[3,
produtosDataGridView.CurrentRow.Index].Value.ToString();
/*
* File...:
ProdutosForm.cs
* Author.:
Carlos Camacho - www.camachojunior.com.br
* Content:
Formulário de Produtos
* Subject: Guia
prático para o desenvolvimento de Aplicações C# em Camadas
*/
using System;
using System.Collections.Generic;
using
System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using
System.Windows.Forms;
using Loja.BLL;
using Loja.DAL;
using Loja.Modelos;
namespace Loja.UIWindows
{
{
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 10/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
InitializeComponent();
LINHA DE CÓDIGO LOGIN
}
{
produtosDataGridView.DataSource
= obj.Listagem();
codigoTextBox.Text = produtosDataGridView[0,
produtosDataGridView.CurrentRow.Index].Value.ToString();
nomeTextBox.Text
= produtosDataGridView[1,
produtosDataGridView.CurrentRow.Index].Value.ToString();
precoTextBox.Text = produtosDataGridView[2,
produtosDataGridView.CurrentRow.Index].Value.ToString();
estoqueTextBox.Text = produtosDataGridView[3,
produtosDataGridView.CurrentRow.Index].Value.ToString();
}
{
AtualizaGrid();
nomeTextBox.Focus();
}
{
codigoTextBox.Text = "";
nomeTextBox.Text = "";
precoTextBox.Text = "";
estoqueTextBox.Text = "";
}
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 11/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
{
LINHA DE CÓDIGO LOGIN
try
{
produto.Nome =
nomeTextBox.Text;
produto.Preco = Convert.ToDecimal(precoTextBox.Text);
produto.Estoque = Convert.ToInt32(estoqueTextBox.Text);
obj.Incluir(produto);
MessageBox.Show("O
produto foi incluído com sucesso!");
codigoTextBox.Text = Convert.ToString(produto.Codigo);
}
{
MessageBox.Show("Erro:
" + ex.Message);
}
AtualizaGrid();
}
{
{
MessageBox.Show("Um
produto precisa ser selecionado para alteração.");
}
else
try
{
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 12/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
ProdutoInformation produto = new ProdutoInformation();
LINHA DE CÓDIGO LOGIN
produto.Codigo
= int.Parse(codigoTextBox.Text);
produto.Nome = nomeTextBox.Text;
produto.Preco = Convert.ToDecimal(precoTextBox.Text);
produto.Estoque
= Convert.ToInt32(estoqueTextBox.Text);
obj.Alterar(produto);
MessageBox.Show("O
produto foi atualizado com sucesso!");
}
{
MessageBox.Show("Erro:
" + ex.Message);
}
AtualizaGrid();
}
{
if (codigoTextBox.Text.Length == 0)
{
MessageBox.Show("Um
produto deve ser selecionado antes da exclusão.");
}
else
try
{
int codigo = Convert.ToInt32(codigoTextBox.Text);
ProdutosBLL obj = new ProdutosBLL();
obj.Excluir(codigo);
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 13/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
MessageBox.Show("O
produto foi excluído com sucesso!");
LINHA DE CÓDIGO LOGIN
AtualizaGrid();
}
{
MessageBox.Show(ex.Message);
}
}
{
AtualizaGrid();
}
{
codigoTextBox.Text = produtosDataGridView[0,
produtosDataGridView.CurrentRow.Index].Value.ToString();
nomeTextBox.Text
= produtosDataGridView[1,
produtosDataGridView.CurrentRow.Index].Value.ToString();
precoTextBox.Text = produtosDataGridView[2,
produtosDataGridView.CurrentRow.Index].Value.ToString();
estoqueTextBox.Text
= produtosDataGridView[3,
produtosDataGridView.CurrentRow.Index].Value.ToString();
}
}
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 14/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
obj.Show();
LINHA DE CÓDIGO LOGIN
Acabamos de implementar o Formulário de Produtos do nosso
projeto Loja .Net.
MCP .Net, MCP SQL Server, Carlos Camacho leciona disciplinas técnicas na área de Ciências Exatas e
é Consultor em Tecnologia da Informação para Instituições Financeiras.
5 0 0 6
Leia também
Como criar botões em jogos SFML.NET
C#
Publicidade
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 15/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
Linha de Código
www.linhadecodigo.com.br/artigo/1918/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-7.aspx 16/16
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 8
Pesquisar
Desenvolvimento - C#
Guia prático para o desenvolvimento de Aplicações C# em
Camadas - parte 8
Este é o oitavo artigo da série onde vamos demonstrar passo-a-passo a construção de uma aplicação .Net utilizando o
conceito de desenvolvimento em camadas.
4 0 0 9
www.linhadecodigo.com.br/artigo/1936/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-8.aspx 1/9
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 8
- Clique em Add
para adicionar o formulário.
Name: clienteLabel
www.linhadecodigo.com.br/artigo/1936/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-8.aspx 2/9
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 8
Text: Cliente:
LINHA DE CÓDIGO LOGIN
Location: 35; 37
Name: produtoLabel
Text: Produto:
Location: 35; 64
Name: quantidadeLabel
Text: Quantidade:
Location: 35; 95
Name: clienteComboBox
DisplayMember: Nome
DropDownStyle: DropDownList
DropDownWidth: 300
Location: 106;
34
Size: 300;
21
ValueMember: Codigo
Name: produtoComboBox
DisplayMember: Nome
DropDownStyle: DropDownList
DropDownWidth: 300
Location: 106;
64
Size: 300;
21
ValueMember: Codigo
Name: quantidadeTextBox
LINHA DE CÓDIGO LOGIN
Location: 106;
95
Size: 66; 20
Text: 1
Name: incluirVendaButton
Location: 106;
128
Size: 171;
23
Text: Realizar
a Venda
clienteComboBox.DataSource = obj.ListaDeClientes;
produtoComboBox
= obj.ListaDeProdutos;
using Loja.BLL;
using Loja.DAL;
www.linhadecodigo.com.br/artigo/1936/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-8.aspx 4/9
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 8
using Loja.Modelos;
LINHA DE CÓDIGO LOGIN
no início do code behind do VendasForm.cs
try
{
venda.CodigoCliente = (int)clienteComboBox.SelectedValue;
venda.CodigoProduto = (int)produtoComboBox.SelectedValue;
venda.Data =
DateTime.Now;
venda.Faturado = false;
obj.Incluir(venda);
MessageBox.Show("A
venda foi realizada com sucesso!");
}
{
MessageBox.Show(ex.Message);
}
/*
* File...:
VendasForm.cs
* Author.:
Carlos Camacho - www.camachojunior.com.br
* Content:
Formulário de Vendas
* Subject: Guia
prático para o desenvolvimento de Aplicações C# em Camadas
*/
using System;
www.linhadecodigo.com.br/artigo/1936/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-8.aspx 5/9
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 8
using System.Collections.Generic;
LINHA DE CÓDIGO LOGIN
using
System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using
System.Windows.Forms;
using Loja.BLL;
using Loja.DAL;
using Loja.Modelos;
namespace Loja.UIWindows
{
{
InitializeComponent();
}
{
clienteComboBox.DataSource = obj.ListaDeClientes;
produtoComboBox.DataSource = obj.ListaDeProdutos;
}
{
try
{
www.linhadecodigo.com.br/artigo/1936/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-8.aspx 6/9
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 8
venda.Quantidade = int.Parse(quantidadeTextBox.Text);
LINHA DE CÓDIGO LOGIN
venda.CodigoCliente = (int)clienteComboBox.SelectedValue;
venda.CodigoProduto = (int)produtoComboBox.SelectedValue;
venda.Data =
DateTime.Now;
venda.Faturado = false;
obj.Incluir(venda);
MessageBox.Show("A
venda foi realizada com sucesso!");
}
{
MessageBox.Show(ex.Message);
}
}
}
obj.MdiParent = this;
obj.Show();
www.linhadecodigo.com.br/artigo/1936/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-8.aspx 7/9
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 8
MCP .Net, MCP SQL Server, Carlos Camacho leciona disciplinas técnicas na área de Ciências Exatas e
é Consultor em Tecnologia da Informação para Instituições Financeiras.
4 0 0 9
Leia também
Como criar botões em jogos SFML.NET
C#
Publicidade
www.linhadecodigo.com.br/artigo/1936/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-8.aspx 8/9
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 8
Linha de Código
www.linhadecodigo.com.br/artigo/1936/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-8.aspx 9/9
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 9 (Final)
Pesquisar
Desenvolvimento - C#
Guia prático para o desenvolvimento de Aplicações C# em
Camadas - parte 9 (Final)
Este é o nono e último artigo da série onde vamos demonstrar passo-a-passo a construção de uma aplicação .Net
utilizando o conceito de desenvolvimento em camadas.
0 0 0 5
Name: ProdutosEmFaltaForm
www.linhadecodigo.com.br/artigo/1938/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-9-final.aspx 1/10
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 9 (Final)
- Clique em Add
para adicionar o formulário.
Name: produtosEmFaltaLabel
www.linhadecodigo.com.br/artigo/1938/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-9-final.aspx 2/10
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 9 (Final)
Location: 9; 21
LINHA DE CÓDIGO LOGIN
Text: Relatório de Produtos em Falta:
Name: produtosEmFaltaDataGridView
Anchor: Top,
Bottom, Left, Right
Location: 12; 58
Size: 474;
206
produtosEmFaltaDataGridView.DataSource = produto.ProdutosEmFalta();
using Loja.BLL;
using Loja.DAL;
using Loja.Modelos;
www.linhadecodigo.com.br/artigo/1938/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-9-final.aspx 3/10
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 9 (Final)
/*
* File...:
ProdutosEmFaltaForm.cs
* Author.:
Carlos Camacho - www.camachojunior.com.br
* Content:
Formulário de Vendas
* Subject: Guia
prático para o desenvolvimento de Aplicações C# em Camadas
*/
using System;
using
System.Collections.Generic;
using
System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Loja.BLL;
using Loja.DAL;
using Loja.Modelos;
namespace Loja.UIWindows
public ProdutosEmFaltaForm()
InitializeComponent();
private void
ProdutosEmFaltaForm_Load(object sender, EventArgs e)
www.linhadecodigo.com.br/artigo/1938/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-9-final.aspx 4/10
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 9 (Final)
{
LINHA DE CÓDIGO LOGIN
ProdutosBLL produto = new
ProdutosBLL();
produtosEmFaltaDataGridView.DataSource = produto.ProdutosEmFalta();
obj.MdiParent = this;
obj.Show();
www.linhadecodigo.com.br/artigo/1938/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-9-final.aspx 5/10
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 9 (Final)
Estrutura de Arquivos
www.linhadecodigo.com.br/artigo/1938/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-9-final.aspx 6/10
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 9 (Final)
·
DAL.dll
·
BLL.dll
·
UIWindows.exe
Dicas:
Prezado
Sr.
Como
usuário do Sistema Loja .Net desenvolvido pela sua empresa, informo que
precisamos que o Sr. nos
envie uma atualização para atender as nossas novas
necessidades.
Nossa
empresa está em contínuo crescimento e em breve contrataremos uma empresa de
Call Center que
oferecerá promoções especiais aos nossos clientes. Dessa forma,
precisamos fazer com que não seja
permitido o cadastramento de
clientes sem o número de telefone, pois essa
informação será muito importante
para o nosso sucesso.
Por
favor nos notifique assim que a nova versão do sistema estiver disponível para
testes.
Atenciosamente,
Carlos Camacho
Analista de Sistemas
carlos.camacho@nossacaixa.com.br
www.linhadecodigo.com.br/artigo/1938/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-9-final.aspx 7/10
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 9 (Final)
Algumas perguntas:
LINHA DE CÓDIGO LOGIN
- Qual camada do Sistema Loja .Net
você vai precisar alterar para atender a solicitação do cliente?
Conclusões
·
Comunicação entre as camadas;
·
Vantagens do modelo de desenvolvimento em camadas;
·
Controle de transações do banco de dados com o ADO .Net;
·
Construção de uma aplicação para Windows.
·
Camada de acesso à dados ou Data Access Layer (DAL);
·
Camada de regras de negócio ou Business Logic Layer (BLL);
e
·
Camada de interface do usuário ou User Interface (UI).
www.linhadecodigo.com.br/artigo/1938/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-9-final.aspx 8/10
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 9 (Final)
Um forte abraço,
LINHA DE CÓDIGO LOGIN
Carlos Camacho
www.camachojunior.com.br
MCP .Net, MCP SQL Server, Carlos Camacho leciona disciplinas técnicas na área de Ciências Exatas e
é Consultor em Tecnologia da Informação para Instituições Financeiras.
0 0 0 5
Leia também
Como criar botões em jogos SFML.NET
C#
Publicidade
www.linhadecodigo.com.br/artigo/1938/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-9-final.aspx 9/10
25/06/2021 Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 9 (Final)
Linha de Código
www.linhadecodigo.com.br/artigo/1938/guia-pratico-para-o-desenvolvimento-de-aplicacoes-csharp-em-camadas-parte-9-final.aspx 10/10