Compartilhar via


Visão geral de TableAdapter

 

TableAdapters são componentes gerados pelo designer que se conectar a um banco de dados, executam consultas ou procedimentos armazenados e preencher seu DataTable com os dados retornados. TableAdapters também são usados para enviar dados atualizados de seu aplicativo de volta para o banco de dados. Você pode ter tantas consultas quanto você deseja em um TableAdapter desde que elas retornem dados de acordo com o esquema da tabela à qual o TableAdapter está associado. O diagrama a seguir mostra como os TableAdapters interagir com bancos de dados e outros objetos na memória:

Fluxo de dados em um aplicativo cliente

Enquanto TableAdapters são criados com o Dataset Designer, as classes TableAdapter geradas não são geradas como classes aninhadas do DataSet. Eles estão localizados em um namespace separado específico para cada conjunto de dados. Por exemplo, se você tiver um dataset chamado NorthwindDataSet, os TableAdapters associados com a DataTables no NorthwindDataSet no NorthwindDataSetTableAdapters namespace. Para acessar um determinado TableAdapter programaticamente, você deve declarar uma nova instância do TableAdapter. Por exemplo:

NorthwindDataSet northwindDataSet = new NorthwindDataSet();

NorthwindDataSetTableAdapters.CustomersTableAdapter customersTableAdapter = 
    new NorthwindDataSetTableAdapters.CustomersTableAdapter();

customersTableAdapter.Fill(northwindDataSet.Customers);
Dim northwindDataSet As New NorthwindDataSet()
Dim customersTableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()

customersTableAdapter.Fill(northwindDataSet.Customers)

Esquema de DataTable associados

Ao criar um TableAdapter, a consulta inicial ou procedimento armazenado é usado para definir o esquema do TableAdapter associado do DataTable. Você executa essa consulta inicial ou procedimento armazenado chamando o TableAdapter Fill método (que preenche o TableAdapter associado do DataTable). Todas as alterações feitas à consulta principal do TableAdapter são refletidas no esquema da tabela de dados associada. Por exemplo, remover uma coluna da consulta principal remove a coluna da tabela de dados associada. Se quaisquer consultas adicionais no TableAdapter usam instruções SQL retornando colunas que não estão na consulta principal, em seguida, o designer tentará sincronizar as alterações de coluna entre a consulta principal e quaisquer consultas adicionais. Para obter mais informações, consulte Como editar TableAdapters.

Comandos de atualização do TableAdapter

A funcionalidade de atualização de um TableAdapter é dependente de quanta informação está disponível com base na consulta principal fornecida no TableAdapter Wizard. Por exemplo, TableAdapters que estejam configurados para buscar valores de várias tabelas (JOINs), valores escalares, exibições ou os resultados de funções de agregação não são criadas inicialmente com a capacidade de enviar atualizações de volta para o banco de dados subjacente. No entanto, você pode configurar os comandos INSERT, UPDATE e DELETE manualmente no propriedades janela.

Consultas TableAdapter

TableAdapter com múltiplas consultas

TableAdapters podem conter consultas múltiplas para preencher suas tabelas de dados associados. Você pode definir tantas consultas para um TableAdapter quanto seu aplicativo requer, desde que cada consulta retorna dados de acordo com o mesmo esquema que sua tabela de dados associada. Isso permite o carregamento de dados que satisfaçam critérios diferentes. Por exemplo, se seu aplicativo contiver uma tabela de clientes, você pode criar uma consulta que preenche a tabela com todos os clientes cujo nome começa com uma letra específica e outra consulta que preenche a tabela com todos os clientes localizados no mesmo estado. Para preencher um Customers tabela com clientes em um estado determinado você pode criar um FillByState consulta que leva um parâmetro para o valor de estado: SELECT * FROM Customers WHERE State = @State. Você executa a consulta chamando o FillByState método e passando o valor do parâmetro assim: CustomerTableAdapter.FillByState("WA"). Para obter mais informações, consulte Como criar consultas TableAdapter.

Além de consultas que retornam dados do mesmo esquema como tabela de dados do TableAdapter, você pode adicionar consultas que retornam valores escalares de (único). Por exemplo, criar uma consulta que retorna uma contagem de clientes (SELECT Count(*) From Customers) é válido para um CustomersTableAdapter mesmo que os dados retornados não estão de acordo com o esquema da tabela.

Propriedade ClearBeforeFill

Por padrão, sempre que você executa uma consulta para preencher a tabela de dados do TableAdapter, os dados serão limpos e somente os resultados da consulta são carregados na tabela. Defina o TableAdapter ClearBeforeFill propriedade false se você deseja adicionar ou mesclar os dados retornados de uma consulta aos dados existentes em uma tabela de dados. Independentemente de você limpar os dados, você precisa explicitamente enviar atualizações de volta para o banco de dados, se desejado. Portanto, lembre-se de salvar as alterações feitas nos dados na tabela antes de executar outra consulta que preenche a tabela. Para obter mais informações, consulte Como atualizar dados usando um TableAdapter.

Herança do TableAdapter

TableAdapters estendem a funcionalidade dos adaptadores de dados padrão, encapsulando um configurado DataAdapter. Por padrão, o TableAdapter herda de Component e não pode ser convertido para o DataAdapter classe. Converter um TableAdapter para um DataAdapter resulta em um InvalidCastException. Para alterar a classe base de um TableAdapter, você pode digitar uma classe que deriva de Component no classe Base propriedade do TableAdapter no Dataset Designer.

Propriedades e métodos do TableAdapter

A classe TableAdapter não é parte do .NET Framework, e assim você não pode procurar por ele na documentação ou Pesquisador de objetos. Ele é criado em tempo de design, quando você usa um dos assistentes mencionados acima. O nome atribuído a um TableAdapter quando você o cria baseia-se no nome da tabela que você está trabalhando. Por exemplo, ao criar um TableAdapter com base em uma tabela em um banco de dados denominado Orders, o TableAdapter seria nomeado OrdersTableAdapter. O nome da classe do TableAdapter pode ser alterado usando o nome propriedade o Dataset Designer.

A seguir está as propriedades dos TableAdapters e métodos mais usados:

Membro

Descrição

TableAdapter.Fill

Preenche a tabela de dados associada ao TableAdapter com os resultados do comando SELECT do TableAdapter. Para obter mais informações, consulte Como: preencher um dataset com dados.

TableAdapter.Update

Envia as alterações no banco de dados e retorna um inteiro que representa o número de linhas afetadas pela atualização. Para obter mais informações, consulte Como atualizar dados usando um TableAdapter.

TableAdapter.GetData

Retorna um novo DataTable preenchido com dados.

TableAdapter.Insert

Cria uma nova linha na tabela de dados. Para obter mais informações, consulte Como adicionar linhas a um DataTable.

TableAdapter.ClearBeforeFill

Determina se uma tabela de dados é esvaziada antes de chamar um dos Fill métodos.

Método Update do TableAdapter

TableAdapters usam comandos de dados para leitura e gravação do banco de dados. Inicial do TableAdapter Fill consulta (principal) é usada como base para criar o esquema da tabela de dados associada, bem como o InsertCommand, UpdateCommand, e DeleteCommand comandos associados a TableAdapter.Update método. Isso significa que chamar um TableAdapter Update método executa as instruções criadas quando o TableAdapter foi originalmente configurado, e não uma das consultas adicionais adicionada com o Assistente de configuração de consulta do TableAdapter.

Quando você usa um TableAdapter, ele efetivamente executa as mesmas operações com os comandos que você geralmente deseja executar. Por exemplo, quando você chamar o adaptador Fill método, o adaptador executa o comando de dados no seu SelectCommand propriedade e usa um leitor de dados (por exemplo, SqlDataReader) para carregar o resultado na tabela de dados. Da mesma forma, quando você chamar o adaptador Update método, ele executa o comando apropriado (no UpdateCommand, InsertCommand, e DeleteCommand Propriedades) para cada registro alterado na tabela de dados.

Dica

Se não houver informações suficientes na consulta principal, o InsertCommand, UpdateCommand, e DeleteCommand comandos são criados por padrão quando o TableAdapter é gerado. Se principal do TableAdapter consulta é mais de uma instrução SELECT de tabela simples, é possível que o designer não será capaz de gerar o InsertCommand, UpdateCommand, e DeleteCommand. Se esses comandos não são gerados, você pode receber um erro ao executar o TableAdapter.Update método.

GenerateDbDirectMethods do TableAdapter

Além de InsertCommand, UpdateCommand, e DeleteCommand, TableAdapters são criados com métodos que podem ser executados diretamente no banco de dados. Esses métodos (TableAdapter.Insert, TableAdapter.Update, e TableAdapter.Delete) podem ser chamados diretamente para manipular dados no banco de dados. Isso significa que você pode chamar esses métodos individuais no seu código em vez de chamar o TableAdapter para manipular as inserções, atualizações e exclusões pendentes para a tabela de dados associada.

Se você não deseja criar esses métodos diretos, defina o TableAdapter GenerateDbDirectMethods propriedade false (no propriedades janela). Consultas adicionais no TableAdapter são consultas autônomas — elas não geram esses métodos.

Suporte do TableAdapter para tipos anuláveis

Os TableAdapters oferecem suporte a tipos anuláveis Nullable(Of T) e T?. Para obter mais informações sobre tipos anuláveis em Visual Basic, consulte Tipos de valor que permitem valor nulo (Visual Basic). Para obter mais informações sobre tipos anuláveis em c#, consulte Usando tipos anuláveis (Guia de Programação em C#).

Consulte também

Instruções passo a passo de dados
Como conectar a dados em um banco de dados
Instruções passo a passo: conectando a dados em um banco de dados (Windows Forms)
Preparando o aplicativo para receber dados
Buscando dados no aplicativo
Associar controles a dados no Visual Studio
Editando dados no aplicativo
Validando dados
Salvando dados