Partager via


Enregistrer des données dans une base de données (plusieurs tables) dans des applications .NET Framework

Remarque

La DataSet classe et les classes associées sont des technologies .NET Framework héritées du début des années 2000 qui permettent aux applications d’utiliser des données en mémoire pendant que les applications sont déconnectées de la base de données. Les technologies sont particulièrement utiles pour les applications qui permettent aux utilisateurs de modifier les données et de conserver les modifications apportées à la base de données. Bien que les jeux de données soient une technologie éprouvée, l’approche recommandée pour les nouvelles applications .NET consiste à utiliser Entity Framework Core. Entity Framework offre un moyen plus naturel d’utiliser des données tabulaires en tant que modèles objet et dispose d’une interface de programmation plus simple.

L’un des scénarios les plus courants dans le développement d’applications consiste à afficher des données sur un formulaire dans une application Windows, à modifier les données et à renvoyer les données mises à jour à la base de données. Cette procédure pas à pas crée un formulaire qui affiche les données de deux tables associées et montre 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 dans votre application dans la base de données en appelant la Update méthode d’un TableAdapter. Lorsque vous faites glisser des tables de la fenêtre Sources de données vers un formulaire, le code requis pour enregistrer les données est automatiquement ajouté. Toutes les tables supplémentaires ajoutées à un formulaire nécessitent l’ajout manuel de ce code. Cette procédure pas à pas montre comment ajouter du code pour enregistrer des mises à jour à partir de plusieurs tables.

Les tâches illustrées dans cette procédure pas à pas sont les suivantes :

Conditions préalables

Pour suivre ce tutoriel, vous avez besoin des charges de travail de développement et de traitement de données.NET desktop installées dans Visual Studio. Pour les installer, ouvrez visual Studio Installer et choisissez Modifier (ou Plus>Modifier) en regard de la version de Visual Studio que vous souhaitez modifier. Consultez Modifier Visual Studio.

Cette procédure pas à pas utilise SQL Server Express LocalDB et l’exemple de base de données Northwind.

  1. Si sql Server Express LocalDB n’est pas installé, installez-le à partir de la page de téléchargement SQL Server Express ou via Visual Studio Installer. Dans Visual Studio Installer, vous pouvez installer SQL Server Express LocalDB dans le cadre du stockage et du traitement des données charge de travail, ou en tant que composant individuel.

  2. Installez l’exemple de base de données Northwind en procédant comme suit :

    1. Dans Visual Studio, ouvrez la fenêtre de l’Explorateur d’objets SQL Server. (L’Explorateur d’objets SQL Server est installé dans le cadre de la charge de travail de stockage et de traitement des données dans Visual Studio Installer.) Développez le nœud SQL Server . Cliquez avec le bouton droit sur votre instance LocalDB, puis sélectionnez nouvelle requête.

      Une fenêtre de l’éditeur de requête s’ouvre.

    2. Copiez le script Northwind Transact-SQL dans votre presse-papiers. Ce script T-SQL crée la base de données Northwind à partir de zéro et la remplit avec des données.

    3. Collez le script T-SQL dans l’éditeur de requête, puis choisissez le bouton Exécuter.

      Après un court laps de temps, la requête se termine et la base de données Northwind est créée.

Créer l’application Windows Forms

Créez un projet d’application Windows Forms pour C# ou Visual Basic. Nommez le projet UpdateMultipleTablesWalkthrough.

Créer 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 de Configuration de la Source de Données. Vous devez avoir accès à la base de données d'exemple Northwind pour créer la connexion. Pour plus d’informations sur la configuration de l’exemple de base de données Northwind, consultez Guide pratique pour installer des exemples de bases de données.

  1. Dans le menu Données , sélectionnez Afficher les sources de données.

    La fenêtre Sources de données s’ouvre.

  2. Dans la fenêtre Sources de données , sélectionnez Ajouter une nouvelle source de données pour démarrer l’Assistant Configuration de la source de données.

  3. Dans l’écran Choisir un type de source de données , sélectionnez Base de données, puis Sélectionnez Suivant.

  4. Dans l’écran Choisir votre connexion de données , effectuez l’une des opérations suivantes :

    • Si une connexion de données à l’échantillon de la base de données Northwind est disponible dans le menu déroulant, sélectionnez-la.

      - ou -

    • Sélectionnez Nouvelle connexion pour ouvrir la boîte de dialogue Ajouter/modifier la connexion .

  5. Si votre base de données nécessite un mot de passe, sélectionnez l’option pour inclure des données sensibles, puis sélectionnez Suivant.

  6. Dans la chaîne Enregistrer la connexion dans le fichier Configuration de l’application, sélectionnez Suivant.

  7. Dans l’écran Choisir vos objets de base de données , développez le nœud Tables .

  8. Sélectionnez les tables Clients et Commandes , puis sélectionnez Terminer.

    NorthwindDataSet est ajouté à votre projet et les tables s’affichent dans la fenêtre Sources de données.

Définir les contrôles à créer

Pour cette procédure pas à pas, les données de la table Customers se trouvent dans une disposition Détails où les données sont affichées dans des contrôles individuels. Les données de la table Orders se trouvent dans une disposition 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

  1. Dans la fenêtre Sources de données , développez le nœud Clients .

  2. Sur le nœud Clients , sélectionnez Détails dans la liste de contrôles pour remplacer le contrôle de la table Customers par des contrôles individuels. Pour plus d’informations, consultez Définir le contrôle à créer lors du glisser à partir de la fenêtre Sources de données.

Créer le formulaire lié aux données

Vous pouvez créer les contrôles liés aux données en faisant glisser des éléments de la fenêtre Sources de données vers votre formulaire.

  1. Faites glisser le nœud Clients principal de la fenêtre Sources de données vers Form1.

    Les contrôles liés aux données avec des étiquettes descriptives apparaissent sur le formulaire, ainsi qu’une bande d’outils (BindingNavigator) pour naviguer dans les enregistrements. NorthwindDataSet, CustomersTableAdapter, BindingSourceet BindingNavigator apparaît dans la barre d’état du composant.

  2. Faites glisser le nœud Commandes connexes de la fenêtre Sources de données vers Form1.

    Remarque

    Le nœud Orders associé se trouve sous la colonne Télécopie et est un nœud enfant du nœud Clients .

    Un DataGridView contrôle et une bande d’outils (BindingNavigator) permettant de naviguer dans les enregistrements s’affichent sur le formulaire. Des éléments OrdersTableAdapter et BindingSource apparaissent dans le plateau de composants.

Ajouter du 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 pour le bouton Enregistrer duBindingNavigator formulaire est ajouté au code du formulaire pour envoyer des mises à jour à la base de données. Cette procédure modifie le code pour envoyer des mises à jour dans l’ordre correct. Cela élimine la possibilité de déclencher des erreurs d’intégrité référentielle. Le 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 en fonction des besoins de votre application.

Remarque

Pour plus de clarté, cette procédure pas à pas n’utilise pas de transaction. Toutefois, si vous mettez à jour deux tables ou plus associées, incluez toute la logique de mise à jour dans une transaction. Une transaction est un processus qui garantit que toutes les modifications associées à une base de données réussissent avant la validation des modifications. Pour plus d’informations, consultez Transactions et concurrence.

Pour ajouter la logique de mise à jour à l’application

  1. Sélectionnez le bouton Enregistrer sur le BindingNavigator. Cela ouvre l’Éditeur de code au gestionnaire d’événements bindingNavigatorSaveItem_Click .

  2. Remplacez le code dans le gestionnaire d’événements pour appeler les Update méthodes 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, Addedet Modified). Les mises à jour sont exécutées dans l’ordre correct. Le code doit ressembler à ce qui suit :

    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();
        }
    }
    

Tester l’application

  1. Appuyez sur F5.

  2. Apportez des modifications aux données d’un ou plusieurs enregistrements dans chaque table.

  3. Sélectionnez le bouton Enregistrer.

  4. Vérifiez les valeurs de la base de données pour vérifier que les modifications ont été enregistrées.