Introdução
Nos primórdios da computação, quando um aplicativo era executado em uma única máquina, era comum encontrar sistemas monolíticos contendo todas as funcionalidades do aplicativo em uma única grande camada como demonstra a Figura 1, onde sua manutenção e atualização eram extremamente penosas e complexas.
Com o advento da Internet, esta arquitetura teve que ser alterada, pois o tempo necessário para carregar todos os componentes da regra de negócio no cliente em um aplicativo Web é extremamente elevado, tornando assim o sistema inviável. Devido a esses problemas a arquitetura em duas camadas foi substituída por uma arquitetura em três camadas, como está representado na Figura 3.
A separação em três camadas torna o sistema mais flexível, de modo que partes podem ser alteradas independentemente. Com o emprego de arquitetura em três, qualquer alteração em uma determinada camada não influi nas demais, desde que o mecanismo de comunicação entre elas permanece inalterado. Isto permite substituir uma camada inteira por outra, independente de que camada seja como mostra a Figura 4, ou que um projeto desenvolvido para web, possa abranger também dispositivos móveis, a partir da inclusão de uma nova camada de apresentação.
Neste tutorial estaremos desenvolvendo um sistema de contato, com o objetivo de aprender na prática o conceito de três camadas. Na introdução podemos concluir que o conceito de três camadas, tem por objetivo separar a lógica de apresentação da lógica de negocio e da lógica de acesso ao banco.
Com o objetivo de se manter diversos aplicativos e uma única base de dados, a arquitetura monolítica evoluiu para uma arquitetura em duas camadas onde a lógica de acesso aos dados estava separada do restante da aplicação, permitindo assim vários programas acessar a mesma base de dados. Apesar desta evolução na arquitetura os sistemas ainda eram potencialmente monolíticos, pois a lógica de apresentação (a interface homem máquina) e a lógica de negócio (algoritmos do sistema) estavam reunidas em uma única camada (Haywood, 2003), como representa a Figura 2.
A arquitetura em três camadas envolve a separação das funcionalidades usando camadas, com o objetivo de separar a lógica de apresentação, a lógica de negocio e a conexão com o banco de dados (lógica de acesso a dados).
Desenvolvimento
Vamos entrar criar o banco de dados, neste tutorial vamos usar a Microsoft SQL Server 2008 R2, mas, poderá usar outros SGBD.
Insira o script do banco de dados a seguir:
CREATE DATABASE bdcontato -- remova as linhas de cima primeiro. Atenção se não vai da erro USE bdcontato CREATE TABLE tbcontato ( codigo INT NOT NULL PRIMARY KEY IDENTITY(1, 1), nome VARCHAR(130), endereco VARCHAR(150), telefone CHAR(13) );
.
Vamos criar o projeto em c#, utilizando a IDE Microsoft Visual Studio 2010. Para isso clique no menu File > Nem > Project ou Ctrl+Shift+N.
Em Visual C# > Windows > Windows Forms Application.
Em Name = Digite o nome do Projeto. Ex. sisContato
Na aba Solution Explorer, vamos criar duas pastas que vão ficar responsáveis pela lógica de negocio e de acessos a dados.
Parar isso clique com o botão direito Em SisContato > Add> New Folder
e crie as pastas Dados e Negócios.
Conforme a imagem a seguir:
Camada de Acesso a Dados
Crie a classe Banco na pasta Dados e insira o código a seguir:
Criar a Conexão com o banco de dados
public static string conexao = @"server=.\SQLEXPRESS; Database=bdcontato;Integrated Security=True;";
|
Como vamos saber a conexão com o banco de dados manualmente?
server= Significa o Servidor do Banco de dados. Geralmente para saber onde esta o servidor, entre no SQL Server e copie o nome do Servidor, conforme a imagem:
Database = Nome do banco de dados, não é necessário inserir a extensão do banco (.mdf);
Esses dois são os mais importantes.
Para isso é indiscutível declarar o namespace para acessar os métodos e classe do banco de dados SQL Server.
using System.Data.SqlClient;
|
Abrir a conexão com o banco de dados
SqlConnection conn = new SqlConnection(conexao);
|
Declara o comando SQL, sendo inicializado como vazio (null)
SqlCommand cmd = null;
|
Criar o método para o comando SQL, que ficar responsável por inserir, atualizar e excluir e utilizar o parâmetro para inserir o comando SQL.
public void ComandoSQL(string Sql) { //Abre a Conexão conn.Open(); //Inseri o comando SQL e atribuir a conexão do banco de dados cmd = new SqlCommand(Sql, conn); //Executa o comando sql cmd.ExecuteNonQuery(); //Fechar a conexão conn.Close(); }
Consulta no banco de dados. Utilizar o parâmetro DataGridView para a exibição dos dados, e outro param entro para o comando SQL.
public void Consultar(DataGridView dgv, string Sql)
{
cmd = new SqlCommand(Sql, conn);
conn.Open();
//Diz que o comando é uma query(Texto) e não uma StoredProcedure
cmd.CommandType = CommandType.Text;
//O SqlDataAdapter serve para ligar os dados que estão num banco de
//dados SQL Server com os objetos DataSet e DataTable.
SqlDataAdapter da = new SqlDataAdapter(cmd);
//representa a estrutura de uma tabela de um banco de dados.
DataTable cliente = new DataTable();
//Adiciona ou atualizar linhas em um intervalo especificado no
//DataSet para que correspondam à fonte de dados usando o nome do DataTable, neste caso o 'cliente'
da.Fill(cliente);
//Define a Fonte de dados do DataGridView
dgv.DataSource = cliente;
//Fechar a conexão com o banco de dados
conn.Close();
}
|
Certo, finalizamos a camada de acesso a dados. No Próximo Tutorial estaremos desenvolvendo a camada de Negócio.
muito bom parceiro parabéns seu blog é show...
ResponderExcluirÁlvaro Marcelo,
ResponderExcluirObrigado.
Cara, sou novo neste blog, sou recém formado em S.I, e tenho um breve conhecimento em C#. Pouco tempo observando este blog já percebi que você manda muito bem em C#. Eu tenho um sistema de movimentação de compra e venda, e eu gostaria de amplia-lo fazendo o mesmo imprimir cupom fiscal, até o momento não iniciei se quer pesquisas para realizar este objetivo. Caso você tenha algumas dicas e queira me passar eu agradeço desde já!
ResponderExcluirmeu msn: rafael_brambilla77@hotmail.com
MIM ADD AI AMIGO TENHO ALGUMAS DOVIDAS Q GOSTARIA DE TIRA COM VC SE SER POSSIVEL SOU NOVO AQ NO BLOG E GOSTEI MUITO DOS MATEIAS VISTO NELE... rmixstudiorhaeldj@hotmail.com
ResponderExcluirABRAÇO...
Amigo tenho uma duvida sobre o banco de dados!
ResponderExcluirnesse caso o banco de dados fica dentro da pasta dados?
ele fica embarcado na aplicação?
Tenho que ter o SQLserver instalado nas maquinas onde vou instalar o sistema?
ResponderExcluirdesculpa as perguntas bobas!! mas é q estou começando em programação!
kkk. Não é pergunta boba. Então, isso dependente, se for uma aplicação em rede, não é necessário ter o sql server instalado em cada computador, agora se for, apenas um computador ai sim, lembrando que é preciso adicionar a referencia do sql server na pasta bin.
ResponderExcluirCara, uma dúvida.
ResponderExcluirAs classes não estão conversando!
Por exemplo, chamar a Banco, na classe Regranegocio, não está chamando.
O que posso fazer?
Obrigado!
Olá Lucas, verifique se esta declarando o using da classe regra de negocio.
ResponderExcluirEstranho estou seguindo passa a passo e gerou erro.Pode me ajudar, por gentileza..Ah muito boa sua iniciativa parabéns obrigado por nos ajudar.
ResponderExcluir