Procédure pas à pas : enregistrement de données dans une base de données (plusieurs tables)
Mise à jour : novembre 2007
L'un des scénarios les plus courants lors du développement d'applications consiste à afficher des données sur un formulaire, à les modifier et à renvoyer les données mises à jour à la base de données. Cette procédure pas à pas crée un formulaire qui affiche des données provenant de deux tables connexes et indique comment modifier les enregistrements, puis 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 les données de votre application dans la base de données en appelant la méthode Update d'un TableAdapter. Lorsque vous faites glisser des éléments depuis la fenêtre Sources de données, le code permettant d'enregistrer les données est automatiquement ajouté pour la première table déplacée jusqu'à un formulaire. Toutes les tables supplémentaires ajoutées à un formulaire exigent l'ajout manuel de tout code nécessaire à l'enregistrement de données. Cette procédure pas à pas montre comment ajouter le code permettant d'enregistrer les mises à jour de plusieurs tables.
![]() |
---|
Les boîtes de dialogue et les commandes de menu que vous voyez peuvent différer de celles qui sont décrites dans l'aide selon vos paramètres actifs ou votre édition. 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 illustre les tâches suivantes :
Création d'un nouveau projet Application Windows.
Création et configuration d'une source de données dans votre application à l'aide de l'Assistant Configuration de source de données.
Définition des contrôles des éléments dans la fenêtre Sources de données. 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 jusqu'à votre formulaire.
Modification de quelques enregistrements dans chaque table du groupe de données.
Modification du code permettant de renvoyer à la base de données les données mises à jour dans le groupe de données.
Composants requis
Pour exécuter cette procédure pas à pas, vous devrez :
- 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'assignation d'un nom au projet est facultative à ce stade, mais nous lui donnerons un nom, car nous avons l'intention de l'enregistrer ultérieurement.
Pour créer le nouveau projet Application Windows
Dans le menu Fichier, créez un nouveau projet.
Nommez le projet UpdateMultipleTablesWalkthrough.
Sélectionnez Application Windows, puis cliquez sur OK. Pour plus d'informations, consultez Création d'applications Windows.
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 l'installation 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. Pour plus d'informations, consultez Ajouter/Modifier une connexion, boîte de dialogue (Général).
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 s'affichent dans la fenêtre Sources de données.
Définition des contrôles à créer
Dans le cadre de cette procédure pas à pas, les données contenues dans la table Customers se présentent selon une présentation Détails où elles sont affichées dans les contrôles individuels. Les données de la table Orders se présentent selon une présentation Grille où elles sont affichées dans un contrôle DataGridView.
Pour définir le type de déplacement des éléments contenus dans la fenêtre Sources de données
Développez le nœud Customers dans la fenêtre Sources de données.
Modifiez le type de déplacement de la table Customers en fonction de 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
Vous pouvez créer les contrôles liés aux données en faisant glisser des éléments depuis la fenêtre Sources de données vers votre formulaire.
Pour créer des contrôles liés aux données sur le formulaire
Faites glisser le nœud Customers depuis la fenêtre Sources de données vers Form1.
Les contrôles liés aux données avec des étiquettes descriptives s'affichent sur le formulaire, ainsi qu'une barre d'outils (BindingNavigator) pour naviguer au sein des enregistrements. Un NorthwindDataSet, un CustomersTableAdapter, un BindingSource et un BindingNavigator apparaissent dans la barre d'état des composants.
Faites glisser le nœud Orders connexe depuis la fenêtre Sources de données jusqu'à Form1.
Remarque :
Le nœud Orders connexe se trouve sous la colonne Fax et est un nœud enfant du nœud Customers.
Un contrôle DataGridView et une barre d'outils (BindingNavigator) de navigation au sein des enregistrements apparaissent sur le formulaire. Un OrdersTableAdapter et un BindingSource apparaissent dans la barre d'état des composants.
Ajout du code permettant de 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 pour le bouton Enregistrer de BindingNavigator est ajouté au code du formulaire afin d'envoyer les mises à jour à la base de données. Cette procédure pas à pas modifie ce code pour envoyer les mises à jour dans l'ordre approprié afin d'éliminer toute possibilité de déclenchement d'erreurs d'intégrité référentielle. Ce code implémente également la gestion des erreurs en encapsulant l'appel de mise à jour dans un bloc try-catch. Vous pouvez modifier le code pour l'adapter aux besoins de votre application.
![]() |
---|
Par souci de clarté, cette procédure pas à pas n'utilise pas de transaction, mais si vous mettez à jour plusieurs tables connexes, vous devez inclure toute la logique de mise à jour dans une transaction. Une transaction est un processus qui garantit que toutes les modifications connexes apportées à une base de données sont réussies avant de valider toute modification. Pour plus d'informations, consultez Transactions et concurrence (ADO.NET). |
Pour ajouter une logique de mise à jour à l'application
Double-cliquez sur le bouton Enregistrer situé sur le BindingNavigator pour ouvrir l'Éditeur de code dans le gestionnaire d'événements bindingNavigatorSaveItem_Click.
Remplacez le code du gestionnaire d'événements pour appeler les méthodes Update des TableAdapters connexes. Le code suivant crée d'abord trois tables de données temporaires qui contiendront les informations mises à jour de chaque DataRowState (Deleted, Added et Modified). Ensuite, les mises à jour sont exécutées dans l'ordre approprié. Ce 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.
Modifiez les données d'un ou plusieurs enregistrements dans chaque table.
Cliquez sur le bouton Enregistrer.
Vérifiez les valeurs contenues dans la base de données pour vérifier que les modifications ont été enregistrées.
Étapes suivantes
Selon les exigences 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 :
Ajouter la fonctionnalité de recherche au formulaire. Pour plus d'informations, consultez Comment : ajouter une requête paramétrée à un formulaire dans une application Windows.
Modification de la source de données pour ajouter ou supprimer des objets de base de données. Pour plus d'informations, consultez Comment : modifier un groupe de données.
Voir aussi
Concepts
Vue d'ensemble de l'affichage des données
Autres ressources
Procédures pas à pas relatives aux données
Mise en route avec l'accès aux données
Connexion aux données dans Visual Studio
Préparation de votre application pour recevoir des données
Extraction de données dans votre application
Affichage des données sur des formulaires dans les applications Windows