Procédure pas à pas : enregistrement de données dans une base de données (plusieurs tables)
L'un des scénarios les plus courants dans le développement d'applications consiste à afficher des données dans un formulaire d'une application Windows, à modifier ces données, puis à renvoyer les données mises à jour à la base de données. Cette procédure pas à pas crée un formulaire affichant les données de deux tables associées et indique comment modifier les enregistrements et enregistrer les modifications dans la base de données. Cet exemple utilise les tables Customers et Orders de l'exemple de base de données Northwind.
Vous pouvez enregistrer des données de votre application dans la base de données en appelant la méthode Update d'un TableAdapter. Quand vous faites glisser des éléments depuis la fenêtre Sources de données, du code permettant d'enregistrer les données est automatiquement ajouté pour la première table déplacée dans un formulaire. Toutes les tables supplémentaires ajoutées à un formulaire requièrent l'ajout manuel du code requis pour enregistrer les données. Cette procédure pas à pas indique comment ajouter du code pour enregistrer les mises à jour de plusieurs tables.
Notes
Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée.Pour modifier vos paramètres, choisissez Importation et exportation de paramètres dans le menu Outils.Pour plus d'informations, consultez Paramètres Visual Studio.
Cette procédure pas à pas décrit notamment les tâches suivantes :
Création d'un projet d'application Windows.
Création et configuration d'une source de données dans votre application à l'aide de l'Configuration de source de données (Assistant).
Définition des contrôles des éléments dans la Sources de données (fenêtre). Pour plus d'informations, consultez Comment : définir le contrôle à créer lors d'une opération de glisser-déplacer à partir de la fenêtre Sources de données.
Création de contrôles liés aux données en faisant glisser des éléments depuis la fenêtre Sources de données vers votre formulaire.
Modification d'une paire d'enregistrements dans chaque table du dataset.
Modification du code pour renvoyer les données mises à jour dans le dataset à la base de données.
Composants requis
Pour exécuter cette procédure pas à pas, vous avez besoin des éléments suivants :
- avoir accès à l'exemple de base de données Northwind. Pour plus d'informations, consultez Comment : installer des exemples de bases de données.
Création de l'application Windows
La première étape consiste à créer une application Windows. L'attribution d'un nom au projet est facultative à ce stade, mais nous allons lui en donner un car nous avons l'intention de l'enregistrer ultérieurement.
Pour créer le projet d'application Windows
Dans le menu Fichier, créez un nouveau projet.
Attribuez le nom UpdateMultipleTablesWalkthrough au projet.
Sélectionnez Application Windows et cliquez sur OK. Pour plus d'informations, consultez Développement d'applications clientes.
Le projet UpdateMultipleTablesWalkthrough est créé et ajouté à l'Explorateur de solutions.
Création de la source de données
Cette étape crée une source de données à partir de la base de données Northwind à l'aide de l'Assistant Configuration de source de données. Vous devez avoir accès à l'exemple de base de données Northwind pour créer la connexion. Pour plus d'informations sur la configuration de l'exemple de base de données Northwind, consultez Comment : installer des exemples de bases de données.
Pour créer la source de données
Dans le menu Données, cliquez sur Afficher les sources de données.
Dans la fenêtre Sources de données, cliquez sur Ajouter une nouvelle source de données pour démarrer l'Assistant Configuration de source de données.
Sélectionnez Base de données dans la page Choisir un type de source de données, puis cliquez sur Suivant.
Dans la page Choisir votre connexion de données, effectuez l'une des opérations suivantes :
Si une connexion de données à l'exemple de base de données Northwind est disponible dans la liste déroulante, sélectionnez-la.
ou
Sélectionnez Nouvelle connexion pour ouvrir la boîte de dialogue Ajouter/Modifier la connexion.
Si votre base de données requiert un mot de passe, sélectionnez l'option pour inclure les données sensibles, puis cliquez sur Suivant.
Cliquez sur Suivant dans la page Enregistrer la chaîne de connexion dans le fichier de configuration de l'application.
Développez le nœud Tables dans la page Choisir vos objets de base de données.
Sélectionnez les tables Customers et Orders, puis cliquez sur Terminer.
NorthwindDataSet est ajouté à votre projet et les tables apparaissent dans la fenêtre Sources de données.
Définition des contrôles à créer
Pour cette procédure pas à pas, les données de la table Customers sont présentées dans une vue Détails où les données sont affichées dans des contrôles individuels. Les données de la table Orders sont présentées dans une vue Grille affichée dans un contrôle DataGridView.
Pour définir le type de déplacement des éléments de la fenêtre Sources de données
Développez le nœud Customers dans la fenêtre Sources de données.
Remplacez le contrôle de la table Customers par des contrôles individuels en sélectionnant Détails dans la liste de contrôles du nœud Customers. Pour plus d'informations, consultez Comment : définir le contrôle à créer lors d'une opération de glisser-déplacer à partir de la fenêtre Sources de données.
Création du formulaire lié aux données
Pour créer des contrôles liés aux données, vous pouvez faire glisser des éléments depuis la fenêtre Sources de données vers votre formulaire.
Pour créer des contrôlés liés aux données dans le formulaire
Faites glisser le nœud Customers principal depuis la fenêtre Sources de données vers Form1.
Les contrôles liés aux données assortis d'étiquettes descriptives apparaissent dans le formulaire, ainsi qu'une barre d'outils (BindingNavigator) pour parcourir les enregistrements. NorthwindDataSet, CustomersTableAdapter, BindingSource et BindingNavigator s'affichent dans la barre d'état des composants.
Faites glisser le nœud Orders associé depuis la fenêtre Sources de données vers Form1.
Notes
Le nœud Orders associé est situé sous la colonne Fax et constitue un nœud enfant du nœud Customers.
Un contrôle DataGridView et une barre d'outils (BindingNavigator) pour parcourir les enregistrements apparaissent dans le formulaire. Un OrdersTableAdapter et un BindingSource apparaissent dans la barre d'état des composants.
Ajout de code pour mettre à jour la base de données
Vous pouvez mettre à jour la base de données en appelant les méthodes Update des TableAdapters Customers et Orders. Par défaut, un gestionnaire d'événements est ajouté au code du formulaire pour le bouton Enregistrer de BindingNavigator afin d'envoyer des mises à jour à la base de données. Cette procédure modifie ce code pour envoyer les mises à jour dans l'ordre approprié afin d'éliminer le risque de lever des erreurs d'intégrité référentielle. Le code implémente également la gestion des erreurs en enveloppant l'appel de mise à jour dans un bloc try-catch. Vous pouvez modifier le code pour répondre aux besoins de votre application.
Notes
Dans un souci de clarté, cette procédure pas à pas n'utilise pas de transaction, mais si vous mettez à jour au moins deux tables associées, vous devez inclure toute la logique de mise à jour dans une transaction.Une transaction est un processus qui garantit que toutes les modifications associées apportées à une base de données sont réussies avant de les valider.Pour plus d'informations, consultez Transactions et concurrence.
Pour ajouter une logique de mise à jour à l'application
Double-cliquez sur le bouton Enregistrer de BindingNavigator pour ouvrir l'Éditeur de code sur le gestionnaire d'événements bindingNavigatorSaveItem_Click.
Remplacez le code dans le gestionnaire d'événements pour appeler les méthodes Update des TableAdapters associés. Le code suivant crée d'abord trois tables de données temporaires pour contenir les informations mises à jour pour chaque DataRowState (Deleted, Added et Modified). Les mises à jour sont ensuite exécutées dans l'ordre approprié. Le code doit se présenter comme suit :
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
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(); } }
Test de l'application
Pour tester l'application
Appuyez sur F5.
Apportez quelques modifications aux données d'un ou plusieurs enregistrements dans chaque table.
Appuyez sur le bouton Enregistrer.
Vérifiez les valeurs figurant dans la base de données pour confirmer que les modifications ont bien été enregistrées.
Étapes suivantes
Selon les spécifications de votre application, vous pouvez exécuter différentes étapes après la création d'un formulaire lié aux données dans votre application Windows. Vous pouvez apporter à cette procédure pas à pas les améliorations suivantes :
Ajout d'une fonctionnalité de recherche au formulaire. Pour plus d'informations, consultez Comment : ajouter une requête paramétrable à une application Windows Forms.
Modification de la source de données dans le but d'ajouter ou de supprimer des objets de base de données. Pour plus d'informations, consultez Comment : modifier un groupe de données.
Voir aussi
Concepts
Liaison de contrôles Windows Forms à des données dans Visual Studio
Préparation de votre application pour recevoir des données
Extraction de données dans votre application
Liaison de contrôles à des données dans Visual Studio
Modification des données dans votre application
Autres ressources
Procédures pas à pas relatives aux données