Desenvolvimento - ASP. NET

Acesso a Dados com ASP.NET - Parte 4

Nesta 4ª parte, veremos os conceitos e a prática do DataSet Tipado e do Table Adapter.

por Wellington Balbo de Camargo



Olá pessoal, volto com mais uma parte de nossa série de artigos sobre acesso ao banco de dados com ASP.NET usando a linguagem C#. Nesta parte iremos falar sobre Dataset Tipado e Table Adapter. Acompanhem:

 Definições básicas:

 Dataset Tipado Um DataSet Tipado tem toda a estrutura das tabelas de um banco normal, fornecendo o acesso às colunas do banco como se fossem propriedades do DataSet. Resumindo: um DataSet Tipado nada mais é do que uma classe que o Visual Studio cria colocando o nome de cada coluna de cada tabela do banco como uma propriedade desta classe criada. Uma das inúmeras vantagens do uso do Dataset Tipado é que podemos nos beneficiar do recurso de auto-completar do Visual Studio, mais conhecido como IntelliSense.

Table Adapter – o TableAdapter pode ser entendido como um DataAdapter usado por um DataSet Tipado. Explicando melhor:  o TableAdapter seria uma espécie de DataAdapter Tipado, em que sua função é a de realizar a comunicação entre o DataSet e a fonte de dados. Entretanto, o TableAdapter, diferente do DataAdapter, não é uma classe nativa do .NET Framework. A classe de nosso TableAdapter é gerada automaticamente pelo Visual Studio e é personalizada para cada DataTable do DataSet Tipado.

Abra o Solution Explorer (CTRL + W + S), clique com o botão direito no seu projeto, clique em Add New Item, escolha DataSet, dê o nome DadosDataSet e clique em Ok, como mostra a imagem abaixo.

Descrição: DadosDataSet.JPG

 Irá aparecer uma janela perguntando se o DataSet recém criado pode ser adicionado na pasta App_Code. Clique em Yes e aguarde. Se não aparecer logo de cara para você um Wizard de configuração para o nosso TableAdapter, clique na parte cinza de nosso DataSet e clique em Add > TableAdapter. Deverá aparecer um Wizard parecido com o da imagem abaixo:

Descrição: WizardTableAdapter.JPG

 Começamos nossas configurações escolhendo a conexão que usaremos. Selecione a conexão que tínhamos criado na parte 1 de nossa série de artigos. Clique em Next, o Wizard irá perguntar se desejamos salvar a string de conexão com o banco de dados no arquivo de configuração web.config. Deixe selecionado a opção de salvar e altere o nome da mesma se desejar, como mostra a imagem abaixo:

Descrição: ConnectionString.JPG

 Salvar a string de conexão é uma boa idéia porque qualquer alteração nela não muda em nada o código-fonte, o que facilita a manutenção. Clique em Next.

 Na próxima tela, iremos escolher como faremos o acesso aos dados, por comandos SQL, Stored Procedures existentes ou novas. Vamos usar comandos SQL, escolha a 1ª opção e clique em Next.

Descrição: CommandType.JPG

 Na próxima tela, devemos informar o comando SQL que deve ser executado pelo TableAdapter. Podemos fazer isso de duas formas: inserindo diretamente a instrução SQL do nosso Select que retornava o nome da companhia da tabela de Clientes, ou por meio do editor gráfico de queries, clicando no botão Query Builder. Insira a instrução SQL como na imagem abaixo e clique em Next.

Descrição: SQLStatement.JPG

 Na próxima tela, iremos escolher os métodos que nosso TableAdapter terá. Temos duas maneiras de obter os dados pelo TableAdapter: pelo método Fill(), opção Fill a DataTable, que preenche um DataTable passado como parâmetro, e através de um método que retorna um objeto do tipo DataTable, opção Return a DataTable. Podemos selecionar ambas as opções e alterar os nomes sugeridos pelo VS. Vamos manter o primeiro nome e alterar o segundo para GetCustomers e desmarcar a última opção, que é usada quando queremos criar métodos que façam as operações de inclusão, exclusão e alteração. Seu Wizard deve estar igual ao da imagem abaixo:

Descrição: TableAdapterMethods.JPG

 Ok, processo concluído. Clique em Next e uma tela irá mostrar a você que foi concluída a operação, clique em Finish. Será exibido no nosso DataSet Tipado o DataTable e o TableAdapter criado no Wizard.

 Vamos criar o DataTable da tabela Orders e seu TableAdapter. Para isso, abra o Server Explorer (CTRL + W + L), abra seu banco Northwind, expanda a pasta Tables e arraste a tabela Orders para nosso DataSet Designer, como mostra a imagem:

Descrição: DataSetDesigner.JPG

 Percebemos que o Visual Studio criou automaticamente um DataTable chamado Orders, e um TableAdapter, chamado OrdersTableAdapter, com os métodos Fill() e GetData(), além disso o VS detectou um relacionamento entre a tabela Customers e a tabela Orders, como você pode notar na linha que interliga as duas tabelas.

 Clique com o botão direito do mouse sobre OrdersTableAdapter e clique em Add Query. Iremos fazer praticamente os mesmos passos que fizemos na criação de nosso DataTable Customers. Na primeira tela, escolheremos a opção Use SQL statements e clicaremos em Next. Na próxima tela, iremos deixar selecionado a opção SELECT which return rows e pressionaremos novamente o botão Next. Na tela seguinte, iremos alterar a instrução SQL que o VS gerou para nós. Ficará como na imagem abaixo:

Descrição: SQLStatement2.JPG

 Na próxima tela, deixe marcado somente a opção Return a DataTable e altere o nome do método para ObterEncomendasPeloCliente ou se quiser dê um nome menor! Clique em Next e em Finish para concluir o processo. Seu TableAdapter da tabela Orders deverá ficar como na imagem abaixo:

Descrição: OrdersTableAdapter.JPG

  Até o momento, não precisamos escrever nenhum código. Tudo foi definido de forma gráfica e produtiva. O DataSet Tipado é representado por um arquivo com extensão .xsd, que significa XML Schema Definition. Esse arquivo contém a definição da estrutura do DataSet Tipado e é utilizado para gerar o código C# automaticamente, em tempo de execução ou de desenvolvimento.

 Aqui encerra mais uma parte de nossa série de artigos, na próxima parte iremos criar uma nova página em nossa aplicação parecida com a que já temos e iremos configurar a página, via código, para que receba os dados de nosso DataSet Tipado. Iremos também falar dos controles DataSource do ASP.NET. Abraços!

Até o próximo artigo.

 

Wellington Balbo de Camargo

Wellington Balbo de Camargo - Desenvolvedor Web/Desktop em .NET, com pouco mais de 1 ano de experiência na área. Cursando o 4º Semestre de Análise de Sistemas, atualmente estuda para melhorar os conhecimentos em SQL Server e ASP.NET, buscando em um futuro próximo as certificações Microsoft nessas áreas. Mantém um blog com dicas e artigos para iniciantes em .NET no endereço http://programandodotnet.wordpress.com e nas horas vagas procura ajudar e aprender com o pessoal do Fórum daMSDN. Atualmente é editor de artigos da Linha de Código.