Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Klassen DataSet och relaterade klasser är äldre .NET Framework-tekniker från början av 2000-talet som gör det möjligt för program att arbeta med data i minnet medan apparna kopplas från databasen. Teknikerna är särskilt användbara för appar som gör det möjligt för användare att ändra data och spara ändringarna tillbaka till databasen. Även om datauppsättningar är en bevisad framgångsrik teknik är den rekommenderade metoden för nya .NET-program att använda Entity Framework Core. Entity Framework är ett mer naturligt sätt att arbeta med tabelldata som objektmodeller och har ett enklare programmeringsgränssnitt.
Ett av de vanligaste scenarierna inom programutveckling är att visa data i ett formulär i ett Windows-program, redigera data och skicka tillbaka uppdaterade data till databasen. Den här genomgången skapar ett formulär som visar data från två relaterade tabeller och visar hur du redigerar poster och sparar ändringar i databasen. I det här exemplet används tabellerna Customers och Orders från Northwind-exempeldatabasen.
Du kan spara data i ditt program tillbaka till databasen genom att anropa Update metoden för en TableAdapter. När du drar tabeller från fönstret Datakällor till ett formulär läggs den kod som krävs för att spara data automatiskt till. Alla ytterligare tabeller som läggs till i ett formulär kräver manuell tillägg av den här koden. Den här genomgången visar hur du lägger till kod för att spara uppdateringar från mer än en tabell.
Uppgifter som illustreras i den här genomgången är:
Skapa och konfigurera en datakälla i ditt program med konfigurationsguiden för datakälla.
Ange kontrollerna för objekten i fönstret Datakällor. Mer information finns i Ange vilken kontroll som ska skapas när du drar från fönstret Datakällor.
Skapa databundna kontroller genom att dra objekt från fönstret Datakällor till formuläret.
Ändra några poster i varje tabell i datauppsättningen.
Ändra koden för att skicka uppdaterade data i datauppsättningen tillbaka till databasen.
Förutsättningar
För att slutföra den här självstudien behöver du .NET-skrivbordsutveckling och datalagring och bearbetning arbetsuppgifter installerade i Visual Studio. Om du vill installera dem öppnar du Visual Studio Installer och väljer Ändra (eller Mer>Ändra) bredvid den version av Visual Studio som du vill ändra. Se Ändrai Visual Studio.
Den här genomgången använder SQL Server Express LocalDB och Northwind-exempeldatabasen.
Om du inte har SQL Server Express LocalDB installerar du det antingen från nedladdningssidan för SQL Server Express eller via Visual Studio Installer. I Visual Studio Installerkan du installera SQL Server Express LocalDB som en del av datalagring och bearbetning arbetsbelastning eller som en enskild komponent.
Installera Northwind-exempeldatabasen genom att följa dessa steg:
Öppna fönstret SQL Server Object Explorer i Visual Studio. (SQL Server Object Explorer installeras som en del av datalagrings- och bearbetningsarbetsbelastningen i Visual Studio Installer.) Expandera SQL Server-noden . Högerklicka på din LocalDB-instans och välj Ny fråga.
Ett frågeredigerarefönster öppnas.
Kopiera Northwind-Transact-SQL-skriptet till urklipp. Det här T-SQL-skriptet skapar Northwind-databasen från grunden och fyller den med data.
Klistra in T-SQL-skriptet i frågeredigeraren och välj sedan knappen Kör.
Efter en kort tid slutförs frågan och Northwind-databasen skapas.
Skapa Windows Forms-programmet
Skapa ett nytt Windows Forms App-projekt för C# eller Visual Basic. Ge projektet namnet UpdateMultipleTablesWalkthrough.
Skapa datakällan
Det här steget skapar en datakälla från Northwind-databasen med hjälp av konfigurationsguiden för datakälla. Du måste ha åtkomst till Northwind-exempeldatabasen för att kunna skapa anslutningen. Information om hur du konfigurerar Northwind-exempeldatabasen finns i Så här installerar du exempeldatabaser.
På menyn Data väljer du Visa datakällor.
Fönstret Datakällor öppnas.
I fönstret Datakällor väljer du Lägg till ny datakälla för att starta konfigurationsguiden för datakälla.
På skärmen Välj typ av datakälla väljer du Databas och sedan Nästa.
Gör något av följande på skärmen Välj dataanslutning :
Om det finns en dataanslutning till Northwind-exempeldatabasen i listrutan väljer du den.
-eller-
Välj Ny anslutning för att öppna dialogrutan Lägg till/ändra anslutning .
Om databasen kräver ett lösenord väljer du alternativet för att inkludera känsliga data och väljer sedan Nästa.
På sidan Spara anslutningssträngen till programkonfigurationsfilen väljer du Nästa.
På skärmen Välj databasobjekt expanderar du noden Tabeller .
Välj tabellerna Kunder och Beställningar och välj sedan Slutför.
NorthwindDataSet läggs till i projektet och tabellerna visas i fönstret Datakällor.
Ange vilka kontroller som ska skapas
För denna genomgång är data i Customers-tabellen arrangerad i en Details-layout där data visas i enskilda kontroller. Data från Orders tabellen finns i en gridlayout som visas i en DataGridView kontroll.
Ange droptyp för objekten i fönstret Datakällor
I fönstret Datakällor expanderar du noden Kunder .
På noden Kunder väljer du Information från kontrolllistan för att ändra kontrollen för tabellen Kunder till enskilda kontroller. Mer information finns i Ange vilken kontroll som ska skapas när du drar från fönstret Datakällor.
Skapa det databundna formuläret
Du kan skapa databundna kontroller genom att dra objekt från fönstret Datakällor till formuläret.
Dra huvudnoden Kunder från fönstret Datakällor till Formulär1.
Databundna kontroller med beskrivande etiketter visas i formuläret, tillsammans med ett verktygsfält (BindingNavigator) för navigering av poster. En NorthwindDataSet,
CustomersTableAdapter, BindingSourceoch BindingNavigator visas i komponentfältet.Dra noden Relaterade beställningar från fönstret Datakällor till Formulär1.
Anmärkning
Noden Relaterade beställningar finns under kolumnen Fax och är en underordnad nod till noden Kunder .
En DataGridView kontroll och ett verktygsfält (BindingNavigator) för navigering bland poster visar sig på formuläret. En
OrdersTableAdapteroch BindingSource visas i komponentfältet.
Lägga till kod för att uppdatera databasen
Du kan uppdatera databasen genom att anropa Update metoderna för Kunder och Order TableAdapters. Som standard läggs en händelsehanterare för knappenBindingNavigatorSpara i formulärets kod till för att skicka uppdateringar till databasen. Den här proceduren ändrar koden för att skicka uppdateringar i rätt ordning. Detta eliminerar möjligheten att skapa referensintegritetsfel. Koden implementerar också felhantering genom att omsluta uppdateringsanropet i ett try-catch-block. Du kan ändra koden så att den passar programmets behov.
Anmärkning
För tydlighetens skull använder den här genomgången inte en transaktion. Men om du uppdaterar två eller flera relaterade tabeller inkluderar du all uppdateringslogik i en transaktion. En transaktion är en process som säkerställer att alla relaterade ändringar i en databas lyckas innan några ändringar genomförs. Mer information finns i Transaktioner och samtidighet.
Lägga till uppdateringslogik i programmet
Välj knappen Spara på BindingNavigator. Då öppnas kodredigeraren för
bindingNavigatorSaveItem_Clickhändelsehanteraren.Ersätt koden i händelsehanteraren för att anropa
Update-metoderna för de relaterade TableAdapters. Följande kod skapar först tre temporära datatabeller för att lagra den uppdaterade informationen för varje DataRowState (Deleted, Addedoch Modified). Uppdateringarna körs i rätt ordning. Koden bör se ut så här: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(); } }
Testa programmet
Tryck på F5.
Gör vissa ändringar i data för en eller flera poster i varje tabell.
Välj Spara-knappen.
Kontrollera värdena i databasen för att kontrollera att ändringarna har sparats.