Compartilhar via


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:

Pré-requisitos

Para concluir este passo a passo, você precisará de:

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

  1. Do arquivo menu, crie um novo projeto.

  2. Nomeie o projeto UpdateMultipleTablesWalkthrough.

  3. 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

  1. Sobre o dados menu, clique em Show Data Sources.

  2. No fontes de dados janela, clique em Add New Data Source para iniciar o Data Source Configuration Wizard.

  3. Selecione banco de dados sobre o Escolher um tipo de fonte de dados página e, em seguida, clique em próximo.

  4. 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.

  5. Se seu banco de dados exigir uma senha, selecione a opção para incluir dados confidenciais e, em seguida, clique em próximo.

  6. Clique em próximo sobre o Salvar cadeia de conexão no arquivo de configuração do aplicativo página.

  7. Expanda o tabelas nó o Choose your Database Objects página.

  8. 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

  1. Expanda o clientes nó o fontes de dados janela.

  2. 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

  1. 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.

  2. 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

  1. Clique duas vezes o Salvar botão o BindingNavigator para abrir o Editor de código para o bindingNavigatorSaveItem_Click manipulador de eventos.

  2. 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

  1. Pressione F5.

  2. Faça algumas alterações nos dados de um ou mais registros em cada tabela.

  3. Pressione o Salvar botão.

  4. 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:

Consulte também

Salvar dados no banco de dados