Uložení dat do databáze (více tabulek)
Platí pro:![]()
kód Visual Studio Visual Studio pro Mac
Visual Studio
Jedním z nejběžnějších scénářů vývoje aplikací je zobrazení dat ve formuláři ve Windows aplikaci, úprava dat a odeslání aktualizovaných dat zpět do databáze. Tento názorný postup vytvoří formulář, který zobrazuje data ze dvou souvisejících tabulek a ukazuje, jak upravovat záznamy a ukládat změny zpět do databáze. V tomto příkladu se Customers používají tabulky Orders z ukázkové databáze Northwind.
Data v aplikaci můžete uložit zpět do databáze voláním Update metody TableAdapter. Při přetažení tabulek z okna Zdroje dat do formuláře se automaticky přidá kód, který je nutný k ukládání dat. Všechny další tabulky přidané do formuláře vyžadují ruční přidání tohoto kódu. Tento názorný postup ukazuje, jak přidat kód pro ukládání aktualizací z více tabulek.
Mezi úkoly, které jsou znázorněny v tomto návodu, patří:
Vytvoření a konfigurace zdroje dat v aplikaci pomocí Průvodce konfigurací zdroje dat
Nastavení ovládacích prvků položek v okně Zdroje dat Další informace najdete v tématu Nastavení ovládacího prvku, který se má vytvořit při přetahování z okna Zdroje dat.
Vytváření ovládacích prvků svázaných dat přetažením položek z okna Zdroje dat do formuláře
Úprava několika záznamů v každé tabulce v datové sadě
Úprava kódu tak, aby odesílala aktualizovaná data v datové sadě zpět do databáze.
Požadavky
Tento názorný postup používá SQL Server Express LocalDB a ukázkovou databázi Northwind.
Pokud nemáte SQL Server Express LocalDB, nainstalujte ho buď ze stránky pro stažení SQL Server Express, nebo prostřednictvím Instalační program pro Visual Studio. V Instalační program pro Visual Studio můžete nainstalovat SQL Server Express LocalDB jako součást úlohy ukládání a zpracování dat nebo jako jednotlivá komponenta.
Pomocí následujícího postupu nainstalujte ukázkovou databázi Northwind:
V Visual Studio otevřete okno SQL Server Průzkumník objektů. (SQL Server Průzkumník objektů se instaluje jako součást úlohy ukládání a zpracování dat v Instalační program pro Visual Studio.) Rozbalte uzel SQL Server. Klikněte pravým tlačítkem na instanci LocalDB a vyberte Nový dotaz.
Otevře se okno editoru dotazů.
Zkopírujte skript Northwind Transact-SQL do schránky. Tento skript T-SQL vytvoří databázi Northwind úplně od začátku a naplní ji daty.
Vložte skript T-SQL do editoru dotazů a pak zvolte tlačítko Spustit.
Po krátké době se dotaz dokončí a vytvoří se databáze Northwind.
Vytvoření aplikace model Windows Forms
Vytvořte nový projekt aplikace model Windows Forms pro jazyk C# nebo Visual Basic. Pojmenujte projekt UpdateMultipleTablesWalkthrough.
Vytvoření zdroje dat
Tento krok vytvoří zdroj dat z databáze Northwind pomocí Průvodce konfigurací zdroje dat. Abyste mohli vytvořit připojení, musíte mít přístup k ukázkové databázi Northwind. Informace o nastavení ukázkové databáze Northwind najdete v tématu Postupy: Instalace ukázkových databází.
V nabídce Data vyberte Zobrazit zdroje dat.
Otevře se okno Zdroje dat .
V okně Zdroje dat vyberte Přidat nový zdroj dat a spusťte Průvodce konfigurací zdroje dat.
Na obrazovce Zvolit typ zdroje dat vyberte Databázi a pak vyberte Další.
Na obrazovce Zvolit datové připojení udělejte jednu z těchto věcí:
Pokud je připojení dat k ukázkové databázi Northwind k dispozici v rozevíracím seznamu, vyberte je.
-nebo-
Výběrem možnosti Nové připojení otevřete dialogové okno Přidat nebo upravit připojení .
Pokud vaše databáze vyžaduje heslo, vyberte možnost zahrnout citlivá data a pak vyberte Další.
V připojovacím řetězci Uložit do konfiguračního souboru aplikace vyberte Další.
Na obrazovce Zvolit databázové objekty rozbalte uzel Tabulky .
Vyberte tabulky Zákazníci a Objednávky a pak vyberte Dokončit.
NorthwindDataSet se přidá do projektu a tabulky se zobrazí v okně Zdroje dat.
Nastavení ovládacích prvků, které se mají vytvořit
V tomto názorném postupu jsou data v Customers tabulce v rozložení Podrobnosti , kde se data zobrazují v jednotlivých ovládacích prvcích. Data z Orders tabulky jsou v rozložení mřížky , které se zobrazuje v ovládacím DataGridView prvku.
Nastavení typu rozevíracího seznamu položek v okně Zdroje dat
V okně Zdroje dat rozbalte uzel Zákazníci .
Na uzlu Zákazníci vyberte v seznamu ovládacích prvků podrobnosti a změňte ovládací prvek tabulky Zákazníci na jednotlivé ovládací prvky. Další informace najdete v tématu Nastavení ovládacího prvku, který se má vytvořit při přetahování z okna Zdroje dat.
Vytvoření formuláře vázaného na data
Ovládací prvky vázané na data můžete vytvořit přetažením položek z okna Zdroje dat do formuláře.
Přetáhněte hlavní uzel Zákazníci z okna Zdroje dat do formuláře Form1.
Ovládací prvky vázané na data s popisnými popisky se zobrazí ve formuláři spolu s pruhem nástrojů (BindingNavigator) pro navigaci v záznamech. NorthwindDataSet,
CustomersTableAdapter, BindingSourcea BindingNavigator zobrazí se v zásobníku komponent.Přetáhněte související uzel Objednávky z okna Zdroje dat do formuláře Form1.
Poznámka
Související uzel Objednávky se nachází pod sloupcem Fax a je podřízený uzel uzlu Zákazníci .
Ovládací DataGridView prvek a pás nástrojů (BindingNavigator) pro navigaci v záznamech se zobrazí ve formuláři. V zásobníku komponent se zobrazí a
OrdersTableAdapterBindingSource zobrazí se.
Přidání kódu pro aktualizaci databáze
Databázi můžete aktualizovat voláním Update metod tabulek Customers and Orders TableAdapters. Ve výchozím nastavení se do kódu formuláře přidá obslužná rutina události pro tlačítkoBindingNavigatorUložit do kódu formuláře pro odesílání aktualizací do databáze. Tento postup upraví kód tak, aby odesílal aktualizace ve správném pořadí. Tím se eliminuje možnost vyvolání chyb referenční integrity. Kód také implementuje zpracování chyb zabalením volání aktualizace do bloku try-catch. Kód můžete upravit tak, aby vyhovoval potřebám vaší aplikace.
Poznámka
Pro přehlednost tento návod nepoužívá transakci. Pokud ale aktualizujete dvě nebo více souvisejících tabulek, zahrňte do transakce veškerou logiku aktualizace. Transakce je proces, který zajišťuje, že všechny související změny databáze jsou úspěšné před potvrzením jakýchkoli změn. Další informace najdete v tématu Transakce a souběžnost.
Přidání logiky aktualizace do aplikace
Vyberte tlačítko Uložit na tlačítku BindingNavigator. Tím se otevře Editor kódu obslužné rutině
bindingNavigatorSaveItem_Clickudálosti.Nahraďte kód v obslužné rutině události tak, aby volal
Updatemetody souvisejících TableAdapters. Následující kód nejprve vytvoří tři dočasné datové tabulky, které budou obsahovat aktualizované informace pro každý DataRowState (AddedDeleted, a Modified). Aktualizace se spouští 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(); } }
Testování aplikace
Stiskněte klávesu F5.
Proveďte některé změny dat jednoho nebo více záznamů v každé tabulce.
Vyberte tlačítko Uložit.
Zkontrolujte hodnoty v databázi a ověřte, že byly změny uloženy.