Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
A DataSet classe e as classes relacionadas são tecnologias herdadas do .NET Framework do início dos anos 2000 que permitem que os aplicativos trabalhem com dados na memória enquanto os aplicativos são desconectados do banco de dados. As tecnologias são especialmente úteis para aplicativos que permitem que os usuários modifiquem dados e persistam as alterações no banco de dados. Embora os conjuntos de dados sejam uma tecnologia comprovadamente bem-sucedida, a abordagem recomendada para novos aplicativos .NET é usar o Entity Framework Core. O Entity Framework fornece uma maneira mais natural de trabalhar com dados tabulares como modelos de objeto e tem uma interface de programação mais simples.
Um dos cenários mais comuns no desenvolvimento de aplicativos é exibir dados em um formulário em um aplicativo do Windows, editar os dados e enviar os dados atualizados de volta para o banco de dados. Este passo a passo cria um formulário que exibe dados de duas tabelas relacionadas e mostra como editar registros e salvar alterações de volta no banco de dados. Este exemplo usa as tabelas Customers e Orders do banco de dados de exemplo Northwind.
Você pode salvar dados do seu aplicativo de volta ao banco de dados chamando o método Update de um TableAdapter. Quando você arrasta tabelas da janela Fontes de Dados para um formulário, o código necessário para salvar dados é adicionado automaticamente. Todas as tabelas adicionais adicionadas a um formulário exigem a adição manual desse código. Este passo a passo mostra como adicionar código para salvar atualizações de mais de uma tabela.
As tarefas ilustradas neste passo a passo incluem:
Criando e configurando uma fonte de dados em seu aplicativo com o Assistente de Configuração da Fonte de Dados.
Definindo os controles dos itens na janela Fontes de Dados. Para obter mais informações, consulte Definir o controle a ser criado ao arrastar da janela Fontes de Dados.
Criando controles associados a dados arrastando itens da janela Fontes de Dados para seu formulário.
Modificando alguns registros em cada tabela no conjunto de dados.
Modificando o código para enviar os dados atualizados no conjunto de dados de volta para o banco de dados.
Pré-requisitos
Para concluir este tutorial, você precisa das cargas de trabalho de desenvolvimento e armazenamento e processamento de dados do .NET instaladas no Visual Studio. Para instalá-los, abra do Instalador do Visual Studio e escolha Modificar (ou Mais>Modificar) ao lado da versão do Visual Studio que você deseja modificar. Confira Modificar o Visual Studio.
Este passo a passo usa o SQL Server Express LocalDB e o banco de dados de exemplo Northwind.
Se você não tiver o SQL Server Express LocalDB, instale-o na página de download do SQL Server Express ou por meio do Instalador do Visual Studio. No Instalador do Visual Studio, você pode instalar o SQL Server Express LocalDB como parte da carga de trabalho Armazenamento e processamento de dados ou como um componente individual.
Instale o banco de dados de exemplo Northwind seguindo estas etapas:
No Visual Studio, abra a janela Pesquisador de Objetos do SQL Server. (O Pesquisador de Objetos do SQL Server é instalado como parte da carga de trabalho de armazenamento e processamento de dados no Instalador do Visual Studio.) Expanda o nó do SQL Server . Clique com o botão direito do mouse na instância do LocalDB e selecione Nova Consulta.
Uma janela do editor de consultas é aberta.
Copie o script Transact-SQL da Northwind para sua área de transferência. Esse script T-SQL cria o banco de dados Northwind do zero e o preenche com dados.
Cole o script T-SQL no editor de consultas e, em seguida, escolha o botão Executar.
Após um curto período de tempo, a consulta termina de ser executada e o banco de dados Northwind é criado.
Criar o aplicativo windows forms
Crie um novo projeto de aplicativo do Windows Forms para C# ou Visual Basic. Nomeie o projeto UpdateMultipleTablesWalkthrough.
Criar a fonte de dados
Esta etapa cria uma fonte de dados do banco de dados Northwind usando o Assistente de Configuração da Fonte de Dados. Você deve ter acesso ao banco de dados de exemplo Northwind para criar a conexão. Para obter informações sobre como configurar o banco de dados de exemplo Northwind, consulte Como instalar bancos de dados de exemplo.
No menu Dados , selecione Mostrar Fontes de Dados.
A janela Fontes de Dados é aberta.
Na janela Fontes de Dados , selecione Adicionar Nova Fonte de Dados para iniciar o Assistente de Configuração da Fonte de Dados.
Na tela Escolher um Tipo de Fonte de Dados , selecione Banco de Dados e selecione Avançar.
Na tela Escolher Sua Conexão de Dados , siga um destes procedimentos:
Se uma conexão de dados com o banco de dados de exemplo Northwind estiver disponível na lista suspensa, selecione-a.
- ou -
Selecione Nova Conexão para abrir a caixa de diálogo Adicionar/Modificar Conexão .
Se o banco de dados exigir uma senha, selecione a opção para incluir dados confidenciais e selecione Avançar.
Na opção Salvar a cadeia de conexão no arquivo de configuração do aplicativo, selecione Avançar.
Expanda o nó Tabelas na tela Escolher Objetos do Banco de Dados.
Selecione as tabelas Clientes e Pedidos e selecione Concluir.
O NorthwindDataSet é adicionado ao seu projeto e as tabelas aparecem na janela Fontes de Dados .
Definir os controles a serem criados
Para este passo a passo, os dados na Customers tabela estão no layout Detalhes, onde os dados são exibidos em controles individuais. Os dados da tabela Orders estarão no layout Grade exibidos em um controle DataGridView.
Para definir o tipo de descarte para os itens na janela Fontes de Dados
Na janela Fontes de dados, expanda o nó Clientes.
No nó Clientes, selecione Detalhes na lista de controles para alterar o controle da tabela Clientes para controles individuais separados. Para obter mais informações, consulte Definir o controle a ser criado ao arrastar da janela Fontes de Dados.
Criar o formulário associado a dados
Você pode criar os controles associados a dados arrastando itens da janela Fontes de Dados para seu formulário.
Arraste o nó principal Clientes da janela Fontes de Dados para Form1.
Controles associados a dados com rótulos descritivos aparecem no formulário, juntamente com uma faixa de ferramentas (BindingNavigator) para navegar em registros. Um NorthwindDataSet,
CustomersTableAdapter, BindingSource e BindingNavigator aparecem na bandeja de componentes.Arraste o nó Ordens relacionado da janela Fontes de Dados para Form1.
Observação
O nó Pedidos relacionado está localizado sob a coluna Fax e é um nó filho do nó Clientes.
Um DataGridView controle e uma barra de ferramentas (BindingNavigator) para navegar em registros aparecem no formulário. Um
OrdersTableAdaptere BindingSource aparecem na bandeja de componentes.
Adicionar código para atualizar o banco de dados
É possível atualizar os bancos de dados chamando os métodos Update dos TableAdapters Clientes e Ordens. Por padrão, um manipulador de eventos para o botão Salvar doBindingNavigator é adicionado ao código do formulário para enviar atualizações ao banco de dados. Este procedimento modifica o código para enviar atualizações na ordem correta. Isso elimina a possibilidade de gerar erros de integridade referencial. O código também implementa manipulação de erros com a quebra automática da chamada de atualização em um bloco try-catch. Você pode modificar o código para atender às necessidades do aplicativo.
Observação
Para maior clareza, este passo a passo não usa uma transação. No entanto, se você estiver atualizando duas ou mais tabelas relacionadas, inclua toda a lógica de atualização dentro de uma transação. Uma transação é um processo que garante que todas as alterações relacionadas a um banco de dados sejam bem-sucedidas antes que as alterações sejam confirmadas. Para obter mais informações, consulte Transações e simultaneidade.
Para adicionar lógica de atualização ao aplicativo
Selecione o botão Salvar no BindingNavigator. Isso abre o Editor de Código para o
bindingNavigatorSaveItem_Clickmanipulador de eventos.Substitua o código no manipulador de eventos para chamar os métodos
Updatedos TableAdapters relacionados. O código a seguir primeiramente cria três tabelas de dados temporárias para manter as informações atualizadas para cada DataRowState, Deleted, Added e Modified. As atualizações são executadas na ordem correta. O código deve ser semelhante ao seguinte:this.Validate(); this.ordersBindingSource.EndEdit(); this.customersBindingSource.EndEdit(); NorthwindDataSet.OrdersDataTable deletedOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Deleted); NorthwindDataSet.OrdersDataTable newOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Added); NorthwindDataSet.OrdersDataTable modifiedOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Modified); try { // Remove all deleted orders from the Orders table. if (deletedOrders != null) { ordersTableAdapter.Update(deletedOrders); } // Update the Customers table. customersTableAdapter.Update(northwindDataSet.Customers); // Add new orders to the Orders table. if (newOrders != null) { ordersTableAdapter.Update(newOrders); } // Update all modified Orders. if (modifiedOrders != null) { ordersTableAdapter.Update(modifiedOrders); } northwindDataSet.AcceptChanges(); } catch (System.Exception ex) { MessageBox.Show("Update failed"); } finally { if (deletedOrders != null) { deletedOrders.Dispose(); } if (newOrders != null) { newOrders.Dispose(); } if (modifiedOrders != null) { modifiedOrders.Dispose(); } }
Testar o aplicativo
Pressione F5.
Faça algumas alterações nos dados de um ou mais registros em cada tabela.
Selecione o botão Salvar.
Verifique os valores no banco de dados para verificar se as alterações foram salvas.