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
Dim produtos as Northwind.ProductsDataTable

produtos = productsAdapter.GetProdutos()

For Each produtoLinha As Northwind.ProductsRow in produtos
     Response.Write("Produto: " & produtoLInha.ProductName & "<p>")
Next

 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