VB.NET - Criando e Executando Consultas nos TableAdapters


Introdução

Os TableAdapters fornecem a comunicação entre sua aplicação e uma fonte de dados, ou seja, um TableAdapter efetua a conexão com uma fonte de dados, executa instruções SQL ou procedimentos armazenados e retorna um novo conjunto de dados (DataTable) preenchido com os dados retornados ou preenche um DataTable já existente com os dados retornados. Os TableAdapters também são usados para enviar dados atualizados de sua aplicação de volta a fonte de dados.

Você pode pensar em um TableAdapter como sendo um DataAdapter com um objeto connection embutido e com a característica de conter múltiplas consultas. Cada consulta incluída a um TableAdapter é exposta como um método público que é chamado como qualquer outro método ou função em um objeto.

Além das funcionalidades padrão de um DataAdapter , os TableAdapters fornecem métodos tipados adicionais que encapsulam consultas que compartilham um esquema comum com o DataTable tipado associado; ou seja, você pode ter tantas consultas quando você desejar em um TableAdapter contanto que elas retornam dados que se conformam com o mesmo esquema.

Nas versões anteriores da plataforma .NET um DataAdapter era usado para efetuar a comunicação entre uma aplicação e a fonte de dados. Enquanto os DataAdapters ainda são o principal componente dos provedores de dados do .NET Framework, os TableAdapteres são gerados pelo descritor com funcionalidades melhoradas em relação aos DataAdapters. Os TableAdapters contém tipicamente métodos Fill e Update para buscar e atualizar dados na fonte de dados.

Os TableAdapters são criados usando o Descritor DataSet no interior de datasets fortemente tipados. Você pode criar TableAdapters durante a criação de um novo dataset usando o Data Source Configuration Wizard. Pode também criar um TableAdapter em um dataset já existente usando o TableAdapter Configuration Wizard ou pode arrastar os objetos do banco de dados do Server Explorer para o Descritor DataSet.

As classes TableAdapter não são geradas como classes aninhadas do DataSet. Elas estão localizadas em um namespace específico separado para cada DataSet. Assim , se você tem um dataset chamado NorthwindDataSet, os TableAdapters associados com os DataTables no NorthwindDataSet estarão no namespace NorthwindDataSetTableAdapters . Para acessar um TableAdapter via código você precisa declarar uma nova instância do TableAdapter. Exemplo:

Dim northwindDataSet As New NorthwindDataSet()
Dim customersTableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()

customersTableAdapter.Fill(northwindDataSet.Customers)

Quando criamos um TableAdapter a consulta/procedimento armazenando inicial é usado para definir o esquema do DataTable associado ao TableAdapter. Você executa esta consulta/procedimento armazenado chamando o método principal Fill do TableAdapter. Qualquer alteração feita na consulta principal do TableAdapter será refletida no esquema associado ao datatable.

Se você remover uma coluna da consulta principal também remove a coluna do datatable associado. Qualquer consulta adicionai no TableAdapter usar instrução SQL retornando colunas que não estão na consulta principal fará com que o descrito tente sincronizar a coluna alterada entre a consulta principal e a consulta adicional. 

A seguir estão os métodos e propriedades TableAdapters mais usados:

Membro Descrição
TableAdapter.Fill Preenche datatabela associado ao TableAdapter com o resultado do comando SELECT do TableAdapter.
TableAdapter.Update Envia as alterações de volta ao banco de dados.
TableAdapter.GetData Retorna um novo DataTable preenchido com os dados.
TableAdapter.Insert Cria uma nova linha na tabela.
TableAdapter.ClearBeforeFill Determina se a tabela será esvaziada antes de você chamar um dos métodos Fill.

Uma visão de um TableAdapter(CustomersTableAdapter) contendo a consulta principal e as consultas TableAdapters adicionais:

Consultas em TableAdapters

As consultas de TableAdapters são instruções SQL ou procedimentos armazenados que sua aplicação pode executar contra um banco de dados e são expostas como métodos tipados nas TableAdapters. Você pode executar as consultas invocando o método associado como qualquer outro método de um objeto.

As consultas TableAdapters podem preencher um datatabele (Fill ou FillBy) ou retornar uma novo datatable preenchendo com os dados retornados pela consulta.(GetData e GetDataBy)

Podemos incluir consultas em TableAdapters existentes através do - TableAdapter Query Configuration Wizard. - assistente de configuração de consulta TableAdapter.

Você precisa criar uma instância de um TableAdapter antes de estar apto a chamar qualquer um destes métodos.

Ai você me diz: " E como eu faço isto ? "

Ai eu respondo : "Assim..."

1- Arraste os itens da janela Data Sources para o formulário da sua aplicação Windows para criar de forma automática uma instância de um TableAdapter no formulário. Você pode observar o TableAdapter criado na pequena área abaixo da base do formulário, conforme na figura abaixo.

Você pode criar um TableAdapter via código conforme mostrado a seguir:

Dim MovimentoTableAdapter1 As MovimentoDataSetTableAdapters.MovimentoTableAdapter
MovimentoTableAdapter1 = New MovimentoDataSetTableAdapters.MovimentoTableAdapter()

1- Executando consultas TableAdapter que preenchem com dados tabelas já existentes usando métodos Fill()

Para executar uma consulta TableAdapter que preenche um tabela já existente basta chamar a consulta Fill ou FillBy  do TableAdapter na tabela a ser preenchida. Por exemplo, o código abaixo executa a consulta Fill e preenche a tabela Movimento:

MovimentoTableAdapter1.Fill(MovimentoDataSet1.Movimento)

2- Executando consultas TableAdapter que retornam novas tabelas com dados usando métodos GetData()

Para executar uma consulta TableAdapter que retorne uma tabela com dados preenchido como resultado de uma consulta chame a consulta GetData ou GetDataBy do TableAdapter. Assim , o código a seguir executa consulta GetData e retorna uma tabela Movimento:

Dim newMovimentoTable As MovimentoDataSet.MovimentoDataTable
newMovimentoTable = MovimentoTableAdapter1.GetData()

3- Executando consultas TableAdapter que retornam um único valor

Para executar uma consulta TableAdapter que retorna um único valor você deve criar uma instância do TableAdapter , declarar a variável que irá receber o valor e atribuir a esta variável o resultado da consulta. O exemplo a seguir assume que existe uma consulta chamada MovimentoCount no TableAdapter

 

Dim scalarQueriesTableAdapter As MovimentoDataSetTableAdapters.QueriesTableAdapter
scalarQueriesTableAdapter = New MovimentoDataSetTableAdapters.QueriesTableAdapter()

Dim retorno As Integer
retorno = CType(scalarQueriesTableAdapter.MovimentoCount(), Integer)

Se você quer ver como gerenciar dados usando o TableAdatper e executar operações de inclusão, Alteração e exclusão de dados , acompanhe o próximo artigo intitulado:

Eu quero apenas tratar meus dados usando o TableAdapter

Aguardo você no próximo artigo VB....

Referência:


José Carlos Macoratti