Comment : modifier des données dans une base de données à l'aide de LINQ (Visual Basic)

Les requêtes LINQ (Language-Integrated Query) facilitent l’accès aux informations de base de données et la modification des valeurs dans la base de données.

L’exemple suivant montre comment créer une application qui récupère et met à jour des informations dans une base de données SQL Server.

Les exemples de cette rubrique utilisent l’exemple de base de données Northwind. Si cette base de données n’est pas disponible sur votre ordinateur de développement, vous pouvez la télécharger à partir du Centre de téléchargement Microsoft. Pour obtenir des instructions, consultez Téléchargement d’exemples de bases de données.

Pour créer une connexion à une base de données

  1. Dans Visual Studio, ouvrez Explorateur de serveurs/Explorateur de base de données en cliquant sur le menu Affichage, puis sélectionnez Explorateur de serveurs/Explorateur de base de données.

  2. Avec le bouton droit, cliquez sur Connexions de données dans Explorateur de serveurs/Explorateur de base de données, puis cliquez sur Ajouter une connexion.

  3. Spécifiez une connexion valide à l’exemple de base de données Northwind.

Pour ajouter un projet avec un fichier LINQ to SQL

  1. Dans Visual Studio, dans le menu Fichier,pointez sur Nouveau, puis cliquez sur Projet. Sélectionnez Application Windows Forms Visual Basic comme type de projet.

  2. Dans le menu Projet , cliquez sur Ajouter un nouvel élément. Sélectionnez le modèle d’élément Classes LINQ to SQL.

  3. Nommez le fichier northwind.dbml. Cliquez sur Add. Le Concepteur Objet Relationnel (Concepteur O/R) est ouvert pour le fichier northwind.dbml.

Pour ajouter des tables à interroger et modifier dans le concepteur

  1. Dans Explorateur de serveurs/Explorateur de bases de données, développez la connexion à la base de données Northwind. Développez le dossier Tables .

    Si vous avez fermé le Concepteur O/R, vous pouvez le rouvrir en double-cliquant sur le fichier northwind.dbml que vous avez ajouté précédemment.

  2. Cliquez sur la table Customers et faites-la glisser vers le volet gauche du concepteur.

    Le concepteur crée un objet Customer pour votre projet.

  3. Enregistrez vos modifications et fermez le concepteur.

  4. Enregistrez votre projet.

Pour ajouter du code pour modifier la base de données et afficher les résultats

  1. À partir de la boîte à outils, faites glisser un contrôle DataGridView sur le Windows Form par défaut de votre projet Form1.

  2. Lorsque vous avez ajouté des tables au Concepteur O/R, le concepteur a ajouté un objet DataContext à votre projet. Cet objet contient du code que vous pouvez utiliser pour accéder à la table Customers. Il contient également du code qui définit un objet Customer local et une collection Customers pour la table. L'objet DataContext de votre projet est nommé d'après le nom de votre fichier LINQ to SQL. Pour ce projet, l’objet DataContext est nommé northwindDataContext.

    Vous pouvez créer une instance de l’objet DataContext dans votre code puis interroger et modifier la collection Customers spécifiée par le Concepteur O/R. Les modifications apportées à la collection Customers ne sont pas reflétées dans la base de données tant que vous ne les envoyez pas en appelant la méthode SubmitChanges de l’objet DataContext.

    Double-cliquez sur Windows Form, Form1, pour ajouter du code à l’événement Load afin d’interroger la table Customers exposée en tant que propriété de votre DataContext. Ajoutez le code suivant :

    Private db As northwindDataContext
    
    Private Sub Form1_Load(ByVal sender As System.Object,
                           ByVal e As System.EventArgs
                          ) Handles MyBase.Load
      db = New northwindDataContext()
    
      RefreshData()
    End Sub
    
    Private Sub RefreshData()
      Dim customers = From cust In db.Customers
                      Where cust.City(0) = "W"
                      Select cust
    
      DataGridView1.DataSource = customers
    End Sub
    
  3. À partir de la boîte à outils, faites glisser trois contrôles Button sur le formulaire. Sélectionnez le premier contrôle Button. Dans la fenêtre Propriétés, définissez le Name du Button contrôle sur AddButton et sur TextAdd. Sélectionnez le deuxième bouton et définissez la propriété Name sur UpdateButton et la propriété Text sur Update. Sélectionnez le troisième bouton et définissez la propriété Name sur DeleteButton et la propriété Text sur Delete.

  4. Double-cliquez sur le bouton Ajouter pour ajouter du code à son événement Click. Ajoutez le code suivant :

    Private Sub AddButton_Click(ByVal sender As System.Object,
                                ByVal e As System.EventArgs
                               ) Handles AddButton.Click
      Dim cust As New Customer With {
        .City = "Wellington",
        .CompanyName = "Blue Yonder Airlines",
        .ContactName = "Jill Frank",
        .Country = "New Zealand",
        .CustomerID = "JILLF"}
    
      db.Customers.InsertOnSubmit(cust)
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  5. Double-cliquez sur le bouton Mettre à jour pour ajouter du code à son événement Click. Ajoutez le code suivant :

    Private Sub UpdateButton_Click(ByVal sender As System.Object, _
                                   ByVal e As System.EventArgs
                                  ) Handles UpdateButton.Click
      Dim updateCust = (From cust In db.Customers
                        Where cust.CustomerID = "JILLF").ToList()(0)
    
      updateCust.ContactName = "Jill Shrader"
      updateCust.Country = "Wales"
      updateCust.CompanyName = "Red Yonder Airlines"
      updateCust.City = "Cardiff"
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  6. Double-cliquez sur le bouton Supprimer pour ajouter du code à son événement Click. Ajoutez le code suivant :

    Private Sub DeleteButton_Click(ByVal sender As System.Object, _
                                   ByVal e As System.EventArgs
                                  ) Handles DeleteButton.Click
      Dim deleteCust = (From cust In db.Customers
                        Where cust.CustomerID = "JILLF").ToList()(0)
    
      db.Customers.DeleteOnSubmit(deleteCust)
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  7. Appuyez sur F5 pour exécuter votre projet. Cliquez sur Ajouter pour ajouter un nouvel enregistrement. Cliquez sur Mettre à jour pour modifier le nouvel enregistrement. Cliquez sur Supprimer pour supprimer le nouvel enregistrement.

Voir aussi