ASP.NET 2.0 - Criando uma camada de acesso a dados
Neste artigo vou mostrar como podemos criar uma camada de acesso a dados usando os novos recursos da ASP.NET 2.0. A ferramenta que irei usar para desenvolver o projeto deste artigo é o Visual Web Developer 2005 Express Edition que é uma ferramenta grátis e que pode ser baixada aqui: http://msdn.microsoft.com/vstudio/express/
Neste tutorial eu vou usar o banco de dados Microsoft Access Northwind.mdb mas você pode usar uma base de dados SQL Server 200o ou SQL Server 2005 Express Edition, a única diferença é a string de conexão que vamos usar no arquivo web.config.
Para começar inicie o VWD e no menu File selecione a opção - New Web Site. Na janela New Web Site selecione o template ASP.NET Web Site informando o nome camadaAcessoBD usando a linguagem Visual Basic , conforme indica a figura abaixo:
O que é uma
Camada de Acesso a Dados ? É uma camada separada da camada da apresentação de dados que tem a função de efetuar a conexão com a fonte de dados e através de comandos SQL (neste nosso caso) obter os dados para apresentação. Esta separação facilita a manutenção e a portabilidade da aplicação. A camada de apresentação, quando deseja exibir algum dado, chama a camada de acesso aos dados e solicita a informação. A camada de apresentação não acessa dados nem a camada de dados faz apresentação. Cada uma cumpre o seu papel. |
Um novo projeto será criado conforme exibido na figura abaixo:
Perceba que além da página padrão Default.aspx e do arquivo web.config que contém as configurações para a aplicação temos uma pasta chamada App_Data. Nesta pasta será colocado o banco de dados Northwind.mdb. Para fazer isto clique com o botão direito do mouse sobre a pasta e selecione a opção Add Existing Item, selecionando a seguir o banco de dados Northwind.mdb. Quando o arquivo é incluído na pasta App_Data ele é também automaticamente incluído no DataBase Explorer.
Selecionando a conexão com o Northwind.mdb e expandindo as tabelas veremos as tabelas exibidas conforme figura acima.
Podemos usar os objetos DataSet e/ou DataReader para ter acesso as informações da fonte de dados e a forma como usaremos estes objetos é muito importante neste contexto. Vamos usar objetos fortemente tipados que são esquemas rigidamente definidos em tempo de compilação. Também poderíamos ter usados objetos fracamente tipados, nestes o esquema não é conhecido até o tempo de execução. Em um objeto fortemente tipado temos as colunas implementadas como propriedades, assim para referenciar uma coluna fazemos : DataTable.Rows(index).ColumnName. Já nos objetos fracamente tipados para acessar uma coluna usamos a seguinte forma : DataTable.Rows(index).("ColumnName")
Abaixo temos uma representação gráfica da separação entre as camadas de apresentação e a camada de dados.
Nosso próximo passo é criar um DataSet tipado e um Table Adapter . Clique com o botão direito do mouse sobre o nome do projeto na janela Solution Explorer e selecione a opção Add New Item. Na janela a seguir selecione o template DataSet e informe o nome Northwind.xsd conforme figura abaixo:
A clicar no botão Add uma janela
irá exibir uma mensagem perguntando se deseja incluir o dataset na pasta
App_Data. Selecione a opção Sim/Yes.
Após isto o assistente para o DataSet tipado irá surgir e o assistente de configuração para o TableAdapter irá iniciar permitindo que você inclua o TableAdapter no DataSet tipado.
|
Vejamos a seguir como criar o TableAdapter e o DataSet :
Nesta etapa você seleciona a base
de dados, no nosso caso o Northwind.mdb. Para exibir a string de conexão clique no botão - Connection String. Clique no botão Next>
|
|
Nesta etapa iremos salvar a string
de conexão - NorthwindConnectionString no arquivo web.config. Desta forma
não temos que armazená-la nas classes. A string de conexão é salva na seção ConnectionStrings que pode ser cifrada para melhorar a segurança. Clique no botão Next> |
|
A seguir vamos definir o esquema
do Datatable fortemente tipado e fornecer o primeiro método para acessar os
dados via TableAdapter usado para preencher o DataSet tipado. Para iniciar vamos definir a consulta SQL que deve indicar como queremos que o TableAdapter trate a consulta. Clique no botão Next>
|
|
Podemos definir a consulta SQL
digitando diretamente ou usando o Assistente construtor - Query Builder
para montar o seu SQL e ver o resultado. Vamos incluir um comando SELECT que retorne algumas das colunas da tabela Products. Clique no botão Next> |
|
Na fase final temos dois padrões
para preencher os dados: - Fill a DataTable - cria um método que usa um DataTable como parametro e preenche-o baseado no resultado da consulta - Return DataTable - cria e preenche o DataTable e retorna como o retorno do método. Podemos e vamos usar ambos deixando as caixas de opção marcadas. Vamos alterar o método GetData para GetClientes. Se marcarmos a última caixa de opção - , GenerateDBDirectMethods , serão criados os métodos : Insert(), Update() e Delete() para o TableAdapter. Se a caixa for desmarcada todas as atualizações deverá ser feitas através do método Update() do TableAdapter. Finalmente clique no botão FInish. (Finalmente...) |
Ao final deste processo teremos um DataSet tipado com uma única tabela (Northwind.Products), uma classe DataAdapter fortemente tipada (NorthwindTabelAdapter.ProductsTableAdapter) e um método chamado GetProdutos().
Podemos usar estes objetos para
acessar todos os produtos usando o seguinte código:
DIm produtosAdapter As New
NorthwindTableAdapters.ProductsTableAdapter produtos = productsAdapter.GetProdutos() For Each produtoLinha As
Northwind.ProductsRow in produtos |
Se você não percebeu vou chamar sua atenção para alguns detalhes no código acima:
Cada objeto usado no exemplo é fortemente tipado o que permite ao VB 2005 fornecer o recurso de intelliSense e compilação com checagem. Todas os objetos DataTable retornados pelo TableAdapter podem ser vinculados aos controles Web : GridView, DropDownList, etc...
Alterne o modo de visão da página default.aspx para Design e a seguir inclua um texto na página e inclua também o controle GridView com a formatação conforme figura abaixo:
Vamos incluir um código no evento Load da página default.aspx no modo de Design para poder exibir todos os produtos da em um controle GridView(ID= gdv1).
Executando o projeto no servidor web do VWD temos como resultado a seguinte página:
Há muito o que falar sobre o acesso a dados com os novos recursos do ASP.NET 2.0 mas isto é assunto para outro artigo...
Até o próximo artigo ASP.NET...
Referências:
José Carlos Macoratti