Sdílet prostřednictvím


Návod: Ukládání dat do databáze (více tabulek)

 

Publikováno: duben 2016

Jeden z nejběžnějších scénářů při vývoji aplikací je zobrazení dat ve formuláři v aplikaci Windows, upravte data a odešlete aktualizovaná data zpět do databáze. Tento návod vytvoří formulář, který zobrazuje data ze dvou souvisejících tabulek a ukazuje, jak upravit záznamy a uložit změny zpět do databáze. Tento příklad používá Customers a Orders tabulek z ukázkové databázi Northwind.

Uložení dat v aplikaci zpět do databáze pomocí volání Update Metoda TableAdapter. Při přetažení položky z zdroje dat okna kódu k uložení dat je automaticky přidán pro první tabulky do formuláře. Libovolné další tabulky do formuláře přidán vyžadují ruční přidání kódu k uložení dat vyžadováno. Tento návod ukazuje, jak přidat kód uložte aktualizace z více než jedné tabulky.

Poznámka

Dialogová okna a příkazy nabídek, které se může lišit od těch popsaných v nápovědě v závislosti na aktivních nastaveních nebo edici. Chcete-li změnit nastavení, zvolte Nastavení importu a exportu na Nástroje nabídky. Další informace naleznete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.

Úlohy v tomto návodu zahrnují:

Požadavky

K dokončení tohoto návodu, budete potřebovat:

Vytvoření aplikace pro Windows

Prvním krokem je vytvoření aplikace Windows. Přiřazení názvu do projektu je volitelná v tomto kroku, ale můžeme budou pojmenujte ji vzhledem k tomu, že jsme plánování na ukládání později.

Chcete-li vytvořit nový projekt aplikace pro systém Windows

  1. Z soubor nabídky, vytvořte nový projekt.

  2. Název projektu UpdateMultipleTablesWalkthrough.

  3. Vyberte aplikace Windows a klikněte na tlačítko OK. Další informace naleznete v tématu Klientské aplikace.

    UpdateMultipleTablesWalkthrough je vytvořen a přidán do projektu Průzkumníku řešení.

Vytváření zdroje dat

Tento krok vytvoří zdroj dat z databáze Northwind pomocí Průvodce konfigurací zdroje dat. Musí mít přístup k ukázkové databázi Northwind k vytvoření připojení. Informace o nastavení ukázkové databázi Northwind naleznete v tématu Postupy: Instalace ukázkových databází.

Vytvoření zdroje dat

  1. Na Data nabídky, klikněte na tlačítko Zobrazit zdroje dat.

  2. V zdroje dat okna, klikněte na tlačítko Přidat nový zdroj dat ke spuštění Průvodce konfigurací zdroje dat.

  3. Vyberte databáze na Zvolte typ zdroje dat a potom klikněte na tlačítko Další.

  4. Na Vybrat datové připojení proveďte jednu z následujících akcí:

    • Pokud připojení dat k ukázkové databázi Northwind k dispozici v rozevíracím seznamu, vyberte ji.

      - nebo -

    • Vyberte nové připojení otevřete Přidat nebo upravit připojení dialogové okno.

  5. Pokud vaše databáze vyžaduje heslo, vyberte možnost zahrnout citlivá data, a potom klikněte na tlačítko Další.

  6. Klikněte na tlačítko Další na Uložit připojovací řetězec do konfiguračního souboru aplikace stránky.

  7. Rozbalte tabulky uzel na Zvolte vaše databázové objekty stránky.

  8. Vyberte Zákazníci a objednávky tabulky a pak klikněte na tlačítko Dokončit.

    NorthwindDataSet je přidán do projektu a tabulky se zobrazí v zdroje dat okna.

Nastavení ovládacích prvků mají být vytvořeny

V tomto návodu data v Customers Tabulka bude v Podrobnosti rozložení, kde se zobrazují data v jednotlivých ovládacích prvků. Data z Orders Tabulka bude v mřížky rozložení se zobrazí v DataGridView ovládacího prvku.

Chcete-li nastavit typ přetažení u položek v okně zdroje dat

  1. Rozbalte Zákazníci uzel v zdroje dat okna.

  2. Změnit kontrolu Zákazníci tabulky na jednotlivé ovládací prvky výběrem Podrobnosti ze seznamu ovládacího prvku na Zákazníci uzlu. Další informace naleznete v tématu Postupy: Nastavení ovládacího prvku, který má být vytvořen při přetažení z okna zdrojů dat.

Vytvoření formuláře vázané na Data

Můžete vytvořit ovládací prvky vázané na data přetažením položek z zdroje dat do formuláře.

Chcete-li vytvořit ovládací prvky vázané na data ve formuláři

  1. Přetáhněte hlavní Zákazníci uzlu z zdroje dat okna do Form1.

    Ovládací prvky vázané na data s popisky se zobrazí ve formuláři spolu s pruhem nástrojů (BindingNavigator) pro procházení záznamů. A NorthwindDataSet, CustomersTableAdapter, BindingSource, a BindingNavigator v panelu komponent se zobrazí.

  2. Přetáhněte související objednávky uzlu z zdroje dat okna do Form1.

    Poznámka

    Související objednávky uzlu se nachází pod Fax sloupec a je podřízeným uzlem Zákazníci uzlu.

    A DataGridView ovládacího prvku a pruh nástrojů (BindingNavigator) pro procházení záznamů zobrazit ve formuláři.OrdersTableAdapter a BindingSource v panelu komponent se zobrazí.

Přidání kódu k aktualizaci databáze

Databázi můžete aktualizovat pomocí volání Update metody Zákazníci a objednávky objekty TableAdapter. Ve výchozím nastavení jsou obslužné rutiny události BindingNavigator's Uložit tlačítko je přidán do formuláře kód k odesílání aktualizací do databáze. Tento postup upravuje tento kód k odesílání aktualizací ve správném pořadí eliminovat možnost vyvolání chyby referenční integrity. Kód také implementuje pomocí obalování volání aktualizace v bloku try-catch – zpracování chyb. Můžete upravit kód tak, aby odpovídaly potřebám vaší aplikace.

Poznámka

Pro přehlednost tento návod nepoužívá transakce, ale při aktualizaci dvou nebo více souvisejících tabulek, pak musíte zahrnout veškerou logiku aktualizace v rámci transakce. Transakce je proces, který zajišťuje všechny související změny databáze jsou úspěšné před provedením jakékoli změny. Další informace naleznete v tématu Transactions and Concurrency.

Chcete-li přidat logiku aktualizace aplikace

  1. Dvakrát klikněte Uložit tlačítko na BindingNavigator Otevřete Editor kódu bindingNavigatorSaveItem_Click obslužná rutina události.

  2. Nahraďte kód v obslužné rutině události k volání Update metody související objekty TableAdapter. Následující kód nejprve vytvoří tři dočasná data tabulky pro uložení aktualizované informace pro každý DataRowState (Deleted, Added, a Modified). Aktualizace jsou poté spuštěny ve správném pořadí. Kód by měl vypadat takto:

                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
    

Testování aplikace

Testování aplikace

  1. Stisknutím klávesy F5.

  2. Některé změny dat jeden nebo více záznamů v každé tabulce.

  3. Stiskněte klávesu Uložit tlačítko.

  4. Zkontrolujte hodnoty v databázi a ověřte, že změny byly uloženy.

Další kroky

V závislosti na požadavcích aplikace existuje několik kroků, které chcete provést po vytvoření formuláře vázané na data v aplikaci Windows. Mezi vylepšení, která by mohla pro tento návod provést, patří:

Viz také

Uložit data do databáze