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í:
Vytvoření nového aplikace Windows projektu.
Vytváření a konfigurace zdroje dat ve vaší aplikace pomocí Průvodce konfigurací zdroje dat.
Nastavení ovládacích prvků položek v Okno zdroje dat. 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.
Vytváření ovládacích prvků vázaných na data přetažením položek z zdroje dat do formuláře.
Úprava několik záznamů ve všech tabulkách v datové sadě.
Změny kódu k odesílání aktualizovaných dat v datové sadě zpět do databáze.
Požadavky
K dokončení tohoto návodu, budete potřebovat:
- Přístup k ukázkové databázi Northwind. Další informace naleznete v tématu Postupy: Instalace ukázkových databází.
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
Z soubor nabídky, vytvořte nový projekt.
Název projektu
UpdateMultipleTablesWalkthrough
.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
Na Data nabídky, klikněte na tlačítko Zobrazit zdroje dat.
V zdroje dat okna, klikněte na tlačítko Přidat nový zdroj dat ke spuštění Průvodce konfigurací zdroje dat.
Vyberte databáze na Zvolte typ zdroje dat a potom klikněte na tlačítko Další.
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.
Pokud vaše databáze vyžaduje heslo, vyberte možnost zahrnout citlivá data, a potom klikněte na tlačítko Další.
Klikněte na tlačítko Další na Uložit připojovací řetězec do konfiguračního souboru aplikace stránky.
Rozbalte tabulky uzel na Zvolte vaše databázové objekty stránky.
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
Rozbalte Zákazníci uzel v zdroje dat okna.
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
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í.
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
Dvakrát klikněte Uložit tlačítko na BindingNavigator Otevřete Editor kódu
bindingNavigatorSaveItem_Click
obslužná rutina události.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
Stisknutím klávesy F5.
Některé změny dat jeden nebo více záznamů v každé tabulce.
Stiskněte klávesu Uložit tlačítko.
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ří:
Přidání funkce vyhledávání do formuláře. Další informace naleznete v tématu Postupy: Přidání parametrizovaného dotazu do aplikace Windows Forms.
Úprava zdroje dat lze přidat nebo odebrat databázové objekty. Další informace naleznete v tématu Postupy: Upravování datové sady.