Instruções passo a passo: salvando dados em um banco de dados (várias tabelas)
Publicado: abril de 2016
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 no 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 no banco de dados. Este exemplo usa o Customers
e Orders
tabelas do banco de dados de exemplo Northwind.
Você pode salvar dados em seu aplicativo de volta para o banco de dados chamando o Update
método de um TableAdapter. Quando você arrasta itens do fontes de dados janela, código para salvar dados será automaticamente adicionada para a primeira tabela arrastada para um formulário. Quaisquer tabelas adicionais a um formulário exigem a inclusão manual de qualquer código necessário para salvar dados. Este passo a passo mostra como adicionar código para salvar atualizações de mais de uma tabela.
Dica
Caixas de diálogo e comandos de menu que você vê podem diferir daqueles descritos na Ajuda, dependendo de suas configurações ativas ou edição. Para alterar suas configurações, escolha Import and Export Settings sobre o ferramentas menu. Para obter mais informações, consulte Personalizando configurações de desenvolvimento no Visual Studio.
As tarefas ilustradas neste passo a passo incluem:
Criando um novo Windows Application projeto.
Criando e configurando uma fonte de dados em seu aplicativo com o Assistente para Configuração da Fonte de Dados.
Configurando os controles dos itens na Janela Fontes de Dados. Para obter mais informações, consulte Como definir o controle a ser criado quando arrastado da janela Fontes de Dados.
Criando controles associados a dados arrastando itens do fontes de dados window 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 no banco de dados.
Pré-requisitos
Para concluir este passo a passo, você precisará de:
- Acesso ao banco de dados de exemplo Northwind. Para obter mais informações, consulte Como instalar bancos de dados de exemplo.
Criando o aplicativo Windows
A primeira etapa é criar um Windows Application. Atribuir um nome para o projeto é opcional nesta etapa mas nós daremos um nome porque nós estamos planejando salvá-lo posteriormente.
Para criar o novo projeto de aplicativo do Windows
Do arquivo menu, crie um novo projeto.
Nomeie o projeto
UpdateMultipleTablesWalkthrough
.Selecione Windows Application e clique em OK. Para obter mais informações, consulte Aplicativos cliente.
O UpdateMultipleTablesWalkthrough projeto é criado e adicionado ao Solution Explorer.
Criando a fonte de dados
Esta etapa cria uma fonte de dados do banco de dados Northwind usando o Data Source Configuration Wizard. 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.
Para criar a fonte de dados
Sobre o dados menu, clique em Show Data Sources.
No fontes de dados janela, clique em Add New Data Source para iniciar o Data Source Configuration Wizard.
Selecione banco de dados sobre o Escolher um tipo de fonte de dados página e, em seguida, clique em próximo.
Sobre o Escolha sua conexão de dados página faça o seguinte:
Se uma conexão de dados para o banco de dados de exemplo Northwind estiver disponível na lista suspensa, selecione-o.
- ou -
Selecione nova conexão para abrir o Adicionar/Modificar conexão caixa de diálogo.
Se seu banco de dados exigir uma senha, selecione a opção para incluir dados confidenciais e, em seguida, clique em próximo.
Clique em próximo sobre o Salvar cadeia de conexão no arquivo de configuração do aplicativo página.
Expanda o tabelas nó o Choose your Database Objects página.
Selecione o clientes e pedidos tabelas e clique Concluir.
O NorthwindDataSet é adicionado ao seu projeto e as tabelas aparecem no fontes de dados janela.
Configurando os controles a serem criados
Para este passo a passo os dados no Customers
tabela estará em um detalhes layout onde os dados são exibidos em controles individuais. Os dados a partir o Orders
tabela estará em um grade layout exibido em um DataGridView controle.
Para definir o tipo subjacente para os itens na janela fontes de dados
Expanda o clientes nó o fontes de dados janela.
Alterar o controle do clientes tabela para controles individuais selecionando detalhes da lista de controle de clientes nó. Para obter mais informações, consulte Como definir o controle a ser criado quando arrastado da janela Fontes de Dados.
Criando o formulário de associação de dados
Você pode criar os controles associados a dados arrastando itens do fontes de dados window para seu formulário.
Para criar controles ligados a dados no formulário
Arraste principal clientes nó a partir de fontes de dados window para Form1.
Controles ligados a dados com rótulos descritivos aparecem no formulário, juntamente com uma faixa de ferramenta (BindingNavigator) para navegação em registros. Um NorthwindDataSet, CustomersTableAdapter, BindingSource, e BindingNavigator aparecem na bandeja de componentes.
Arraste relacionado pedidos nó a partir de fontes de dados window para Form1.
Dica
Relacionado pedidos nó está localizado abaixo do Fax coluna e é um nó filho do clientes nó.
Um DataGridView controle e uma faixa de ferramenta (BindingNavigator) para navegação em registros aparecem no formulário. Um OrdersTableAdapter e BindingSource aparecem na bandeja de componentes.
Adicionando código para atualizar o banco de dados
Você pode atualizar o banco de dados chamando o Update
métodos o clientes e pedidos TableAdapters. Por padrão, um manipulador de eventos para o BindingNavigatorda Salvar botão é adicionado ao código do formulário para enviar atualizações para o banco de dados. Este procedimento modifica esse código para enviar atualizações na ordem apropriada para eliminar a possibilidade de gerar erros de integridade referencial. O código também implementa o tratamento de erro ao encapsular a chamada de atualização em um bloco try-catch. Você pode modificar o código para atender às necessidades do seu aplicativo.
Dica
Para maior clareza esta explicação passo a passo não usa uma transação, mas se você estiver atualizando duas ou mais tabelas relacionadas, então você deve incluir 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 terão êxito antes de confirmar as alterações. Para obter mais informações, consulte Transações e simultaneidade.
Para adicionar lógica de atualização para o aplicativo
Clique duas vezes o Salvar botão o BindingNavigator para abrir o Editor de código para o
bindingNavigatorSaveItem_Click
manipulador de eventos.Substitua o código no manipulador de eventos para chamar o
Update
métodos dos TableAdapters relacionados. O código a seguir primeiramente cria três tabelas de dados temporárias para armazenar as informações atualizadas para cada DataRowState (Deleted, Added, e Modified). Em seguida, as atualizações são executadas na ordem correta. O código deve parecer com o 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(); } }
Me.Validate() Me.OrdersBindingSource.EndEdit() Me.CustomersBindingSource.EndEdit() Dim deletedOrders As NorthwindDataSet.OrdersDataTable = CType( NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Deleted), NorthwindDataSet.OrdersDataTable) Dim newOrders As NorthwindDataSet.OrdersDataTable = CType( NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Added), NorthwindDataSet.OrdersDataTable) Dim modifiedOrders As NorthwindDataSet.OrdersDataTable = CType( NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Modified), NorthwindDataSet.OrdersDataTable) Try ' Remove all deleted orders from the Orders table. If Not deletedOrders Is Nothing Then OrdersTableAdapter.Update(deletedOrders) End If ' Update the Customers table. CustomersTableAdapter.Update(NorthwindDataSet.Customers) ' Add new orders to the Orders table. If Not newOrders Is Nothing Then OrdersTableAdapter.Update(newOrders) End If ' Update all modified Orders. If Not modifiedOrders Is Nothing Then OrdersTableAdapter.Update(modifiedOrders) End If NorthwindDataSet.AcceptChanges() Catch ex As Exception MsgBox("Update failed") Finally If Not deletedOrders Is Nothing Then deletedOrders.Dispose() End If If Not newOrders Is Nothing Then newOrders.Dispose() End If If Not modifiedOrders Is Nothing Then modifiedOrders.Dispose() End If End Try
Testando o aplicativo
Para testar o aplicativo
Pressione F5.
Faça algumas alterações nos dados de um ou mais registros em cada tabela.
Pressione o Salvar botão.
Verifique os valores no banco de dados para verificar se as alterações foram salvas.
Próximas etapas
Dependendo dos requisitos de aplicativo, há várias etapas que você pode desejar executar após criar um formulário de associação de dados em seu aplicativo do Windows. Alguns aprimoramentos que você poderia fazer neste passo a passo incluem:
Adicionando funcionalidade de pesquisa ao formulário. Para obter mais informações, consulte Como adicionar uma consulta parametrizada a um aplicativo dos Windows Forms.
Editando a fonte de dados para adicionar ou remover objetos de banco de dados. Para obter mais informações, consulte Como editar um conjunto de dados.