Passo a passo: Salvando dados em um banco de dados (várias tabelas)
Uma 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.Esta explicação 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 para o banco de dados.Esse exemplo usa as tabelas Customers e Orders do banco de dados de amostra Northwind.
Você pode salvar dados em seu aplicativo de volta para o banco de dados chamando o método Update de um TableAdapter.Quando você arrastar itens da janela Data Sources, código para salvar dados será automaticamente adicionado para a primeira tabela arrastada em um formulário.Quaisquer tabelas adicionais adicionadas a um formulário exigem a inclusão manual de código necessário para salvar dados.Esta explicação passo a passo mostra como adicionar código para salvar atualizações de mais de uma tabela.
Observação |
---|
As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição.Para alterar as configurações, escolha Import and Export Settings sobre o Ferramentas menu.Para obter mais informações, consulte Configurações de Visual Studio. |
As tarefas ilustradas neste passo a passo incluem:
Criando um novo projeto Windows Application.
Criando e configurando um fonte de dados no seu aplicativo com o Data Source Configuration Wizard.
Configurando os controles dos itens na Janela fontes de dados.Para obter mais informações, consulte Como: definir o controle a ser criado ao arrastar da janela Data Sources.
Criando controles com dados vinculados arrastando itens da janela Data Sources para seu formulário.
Modificando alguns registros em cada tabela no DataSet.
Modificando o código para enviar os dados atualizados no DataSet de volta para o banco de dados.
Pré-requisitos
A fim de concluir este explicação passo a passo, será necessário:
- Acesso ao banco de dados de exemplo Northwind.Para obter mais informações, consulte Como: instalar bancos de dados de amostra.
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 do Windows Application
No menu File, crie um novo projeto.
Nomeie o projeto como UpdateMultipleTablesWalkthrough.
Selecione Windows Application e clique em OK.Para obter mais informações, consulte Desenvolvendo aplicativos clientes.
O projeto UpdateMultipleTablesWalkthrough é criado e adicionado ao Solution Explorer.
Criando o DataSet
Essa 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 exemplos 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 amostra.
Para criar o DataSet
No menu Data, clique em Show Data Sources.
Na janela Data Sources, clique em Add New Data Source para iniciar o Data Source Configuration Wizard.
Selecione Database na página Choose a Data Source Type, e clique Next.
Na página Choose your Data Connection siga um destes procedimentos:
Se uma conexão de dados para o banco de dados de exemplo Northwind estiver disponível na lista drop-down, selecione-o.
- ou -
Selecione New Connection para abrir a caixa de diálogo Add/Modify Connection.Para obter mais informações, consulte Adicionar/modificar a caixa de diálogo de conexão (geral).
Se seu banco de dados exigir uma senha, selecione a opção para incluir dados confidenciais, e clique Next.
Clique Next na página Save connection string to the Application Configuration file.
Expanda o nó Tables na página Choose your Database Objects.
Selecione as tabelas Customers e Orders, e clique Finish.
O NorthwindDataSeté adicionado ao seu projeto e as tabelas aparecem na janela Data Sources.
Definindo os controles a serem criados
Para esta explicação passo a passo os dados na tabela Customers estarão num layout Details onde os dados são exibidos em controles individuais.Os dados da tabela Orders estarão em um layout Grid exibido em um controle DataGridView.
Para definir o tipo subjacente para os itens na janela fontes de dados
Expanda o nó Customers na janela Data Sources.
Alterar o controle da tabela Customers para controles individuais selecionando Details na lista de controle no nó Customers.Para obter mais informações, consulte Como: definir o controle a ser criado ao arrastar da janela Data Sources.
Criando o formulário vinculado a dados
Você pode criar os controles com dados vinculados, arrastando itens da janela Data Sources para seu formulário.
Para criar controles vinculado a dados no formulário
Arraste o nó principal Customers da janela Data Sources no Form1.
Controles vinculados 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 o nó Orders relacionado da janela Data Sources para o Form1.
Observação O nó relacionado a Orders está localizado abaixo da coluna Fax e é um nó filho do nó Customers.
Um controle DataGridView 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 os métodos Update dos TableAdapters de Customers e Orders.Por padrão, um manipulador de eventos para o botão Save do BindingNavigator é adicionado ao código do formulário para enviar atualizações ao banco de dados.Este procedimento modifica esse código para enviar atualizações na ordem correta para eliminar a possibilidade de haver erros de integridade referencial.O código também implementa manipulação de erro através da quebra da chamada de atualização em uma tentativa-bloco catch.Você pode modificar o código para atender às necessidades do seu aplicativo.
Observação |
---|
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 Performing Transactions. |
Para adicionar lógica de atualização para o aplicativo
Clique duas vezes no botão na Save em BindingNavigator para abrir o editor de código para o manipulador de eventos bindingNavigatorSaveItem_Click.
Substitua o código no manipulador de eventos para chamar os métodos Update 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).Então atualizações são executadas na ordem apropriada.O código deve se parecer com o seguinte:
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
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(); } }
Testando o aplicativo
Para testar o aplicativo
Pressione F5.
Faça algumas alterações em dados em um ou mais registros em cada tabela.
Pressione o botão Save.
Verifique os valores no banco de dados para verificar se as alterações foram salvas.
Próximas etapas
Dependendo dos seus requisitos de aplicativo há várias etapas que você pode desejar executar após criar um formulário vinculado a dados no seu aplicativo do Windows.Alguns aprimoramentos que você poderia fazer a essa explicação passo a passo incluem:
Adicionar funcionalidade de pesquisa ao formulário.Para obter mais informações, consulte Como: adicionar uma consulta com parâmetros para um aplicativo do 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..
Consulte também
Conceitos
Novidades para desenvolvimento de aplicativos de dados no Visual Studio 2012
Vinculando controles do Windows Forms a dados em Visual Studio
Preparando seu aplicativo para receber dados
Buscando dados em seu aplicativo.
Controles de vinculação de dados de Visual Studio
Edição de dados em seu aplicativo.
Outros recursos
Explicações passo a passo de dados