Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
De DataSet klassen en gerelateerde klassen zijn verouderde .NET Framework-technologieën uit het begin van de jaren 2000 waarmee toepassingen met gegevens in het geheugen kunnen werken terwijl de apps losgekoppeld zijn van de database. De technologieën zijn vooral handig voor apps waarmee gebruikers gegevens kunnen wijzigen en de wijzigingen weer kunnen behouden in de database. Hoewel gegevenssets een bewezen succesvolle technologie zijn, is de aanbevolen aanpak voor nieuwe .NET-toepassingen het gebruik van Entity Framework Core. Entity Framework biedt een natuurlijkere manier om met tabelgegevens te werken als objectmodellen en heeft een eenvoudigere programmeerinterface.
Een van de meest voorkomende scenario's bij het ontwikkelen van toepassingen is het weergeven van gegevens in een formulier in een Windows-toepassing, het bewerken van de gegevens en het verzenden van de bijgewerkte gegevens naar de database. In dit scenario wordt een formulier gemaakt waarin gegevens uit twee gerelateerde tabellen worden weergegeven en wordt uitgelegd hoe u records bewerkt en wijzigingen weer opslaat in de database. In dit voorbeeld worden de Customers en Orders tabellen uit de Northwind-voorbeeldatabase gebruikt.
U kunt gegevens in uw toepassing weer opslaan in de database door de Update methode van een TableAdapter aan te roepen. Wanneer u tabellen vanuit het venster Gegevensbronnen naar een formulier sleept, wordt automatisch de code toegevoegd die nodig is om gegevens op te slaan. Voor extra tabellen die aan een formulier worden toegevoegd, moet u deze code handmatig toevoegen. In deze procedure ziet u hoe u code toevoegt om updates uit meer dan één tabel op te slaan.
De taken die in deze handleiding worden geïllustreerd, zijn onder andere:
Een gegevensbron in uw toepassing maken en configureren met de wizard Gegevensbronconfiguratie.
De besturingselementen van de items instellen in het venster Gegevensbronnen. Zie Het besturingselement instellen dat moet worden gemaakt wanneer u vanuit het venster Gegevensbronnen sleept voor meer informatie.
Gegevensgebonden besturingselementen maken door items uit het venster Gegevensbronnen naar het formulier te slepen.
Een paar records in elke tabel in de gegevensset wijzigen.
Wijzig de code om de bijgewerkte gegevens in de gegevensset terug te sturen naar de database.
Vereiste voorwaarden
Voor het voltooien van deze zelfstudie hebt u de ontwikkel- en gegevensopslag- en verwerkingsworkloads van .NET nodig die zijn geïnstalleerd in Visual Studio. Als u deze wilt installeren, opent u Visual Studio Installer en kiest u Wijzigen (of Meer>Wijzigen) naast de versie van Visual Studio die u wilt wijzigen. Zie Visual Studio wijzigen.
In dit scenario worden SQL Server Express LocalDB en de Northwind-voorbeelddatabase gebruikt.
Als u geen SQL Server Express LocalDB hebt, installeert u deze via de downloadpagina van SQL Server Express of via het installatieprogramma van Visual Studio. In de Visual Studio Installerkunt u SQL Server Express LocalDB installeren als onderdeel van de Gegevensopslag en -verwerking workload of als een afzonderlijk onderdeel.
Installeer de Northwind-voorbeelddatabase door de volgende stappen uit te voeren:
Open in Visual Studio het venster SQL Server-objectverkenner. (SQL Server Object Explorer wordt geïnstalleerd als onderdeel van de werkbelasting voor gegevensopslag en -verwerking in het Installatieprogramma van Visual Studio.) Vouw het SQL Server-knooppunt uit. Klik met de rechtermuisknop op uw LocalDB-exemplaar en selecteer Nieuwe query.
Er wordt een venster van de queryeditor geopend.
Kopieer het script Northwind Transact-SQL naar het klembord. Met dit T-SQL-script wordt de volledig nieuwe Northwind-database gemaakt en gevuld met gegevens.
Plak het T-SQL-script in de queryeditor en kies vervolgens de knop uitvoeren.
Na korte tijd wordt de query uitgevoerd en wordt de Northwind-database gemaakt.
De Windows Forms-toepassing maken
Maak een nieuw Windows Forms App-project voor C# of Visual Basic. Geef het project de naam UpdateMultipleTablesWalkthrough.
De gegevensbron maken
Met deze stap maakt u een gegevensbron uit de Northwind-database met behulp van de wizard Gegevensbronconfiguratie. U moet toegang hebben tot de Northwind-voorbeelddatabase om de verbinding te maken. Zie Procedure: Voorbeelddatabases installeren voor meer informatie over het instellen van de Northwind-voorbeelddatabase.
Selecteer Gegevensbronnen weergeven in het menu Gegevens.
Het venster Gegevensbronnen wordt geopend.
Selecteer In het venster Gegevensbronnende optie Nieuwe gegevensbron toevoegen om de wizard Configuratie van gegevensbron te starten.
Op het Kies het Gegevensbrontype scherm, selecteer Database en selecteer vervolgens Volgende.
Voer in het scherm Gegevensverbinding kiezen een van de volgende handelingen uit:
Als een gegevensverbinding met de voorbeelddatabase Northwind beschikbaar is in de vervolgkeuzelijst, selecteert u deze.
– of –
Selecteer Nieuwe verbinding om het dialoogvenster Verbinding toevoegen/wijzigen te openen.
Als uw database een wachtwoord vereist, selecteert u de optie om gevoelige gegevens op te nemen en klikt u vervolgens op Volgende.
Selecteer Volgende op de optie verbindingsreeks opslaan naar het toepassingsconfiguratiebestand.
Vouw in het scherm Databaseobjecten kiezen het knooppunt Tabellen uit.
Selecteer de tabellen Klanten en Orders en klik vervolgens op Voltooien.
De NorthwindDataSet wordt toegevoegd aan uw project en de tabellen worden weergegeven in het venster Gegevensbronnen .
De controles instellen zodat ze worden gemaakt
Voor deze stapsgewijze instructie bevinden de gegevens in de Customers tabel zich in een Details-indeling waarin gegevens worden weergegeven in afzonderlijke bedieningselementen. De gegevens uit de Orders tabel bevinden zich in een rasterindeling die wordt weergegeven in een DataGridView controle-element.
Stel het type slepen en neerzetten in voor de items in het Gegevensbronnen-venster.
Vouw in het venster Gegevensbronnen het knooppunt Klanten uit.
Selecteer op het knooppunt KlantenDetails uit de besturingslijst om de bediening van de Klanten tabel aan te passen naar individuele bedieningselementen. Zie Het besturingselement instellen dat moet worden gemaakt wanneer u vanuit het venster Gegevensbronnen sleept voor meer informatie.
Het gegevensgebonden formulier maken
U kunt de gegevensgebonden besturingselementen maken door items uit het venster Gegevensbronnen naar uw formulier te slepen.
Sleep het hoofdknooppunt Klanten van het venster Gegevensbronnen naar Form1.
Gegevensgebonden besturingselementen met beschrijvende labels worden weergegeven in het formulier, samen met een hulpmiddelstrook (BindingNavigator) voor het navigeren door records. Een NorthwindDataSet,
CustomersTableAdapter, BindingSourceen BindingNavigator verschijnen in de componentenlade.Sleep het gerelateerde knooppunt Orders vanuit het venster Gegevensbronnen naar Form1.
Opmerking
Het gerelateerde knooppunt Orders bevindt zich onder de kolom Fax en is een onderliggend knooppunt van het knooppunt Klanten .
Een DataGridView controle en een werkbalk (BindingNavigator) voor het navigeren in records worden weergegeven in het formulier. Een
OrdersTableAdapteren BindingSource worden weergegeven in de componentbak.
Code toevoegen om de database bij te werken
U kunt de database bijwerken door de methoden van de UpdateTableAdapters Klanten en Orders aan te roepen. Standaard wordt een gebeurtenis-handler voor de knop Opslaan van hetBindingNavigator formulier toegevoegd aan de code van het formulier om updates naar de database te verzenden. Met deze procedure wijzigt u de code om updates in de juiste volgorde te verzenden. Dit elimineert de mogelijkheid om fouten met referentiële integriteit te veroorzaken. De code implementeert ook foutafhandeling door de update-aanroep in een try-catch-blok te verpakken. U kunt de code aanpassen aan de behoeften van uw toepassing.
Opmerking
Voor de duidelijkheid wordt deze walkthrough zonder transactie uitgevoerd. Als u echter twee of meer gerelateerde tabellen bijwerkt, neemt u alle updatelogica in een transactie op. Een transactie is een proces dat ervoor zorgt dat alle gerelateerde wijzigingen in een database zijn geslaagd voordat wijzigingen worden doorgevoerd. Zie Transacties en gelijktijdigheid voor meer informatie.
Updatelogica toevoegen aan de toepassing
Selecteer de knop Opslaan op de BindingNavigator. Hiermee opent u de Code-editor naar de
bindingNavigatorSaveItem_Clickgebeurtenis-handler.Vervang de code in de gebeurtenishandler om de methoden van de
Updategerelateerde TableAdapters aan te roepen. Met de volgende code worden eerst drie tijdelijke gegevenstabellen gemaakt om de bijgewerkte informatie voor elk DataRowState (Deleted, Addeden) Modifiedte bewaren. De updates worden in de juiste volgorde uitgevoerd. De code moet er als volgt uitzien: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(); } }
De toepassing testen
Druk op F5.
Breng enkele wijzigingen aan in de gegevens van een of meer records in elke tabel.
Selecteer de knop Opslaan.
Controleer de waarden in de database om te controleren of de wijzigingen zijn opgeslagen.