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 d'une base de données et la modification des valeurs dans la base.

L'exemple suivant indique comment créer une nouvelle application qui récupère et met à jour les informations d'une base de données SQL Server.

Les exemples de cette rubrique utilisent l'exemple de base de données Northwind.Si vous ne disposez pas de l'exemple de base de données Northwind sur votre ordinateur de développement, vous pouvez le télécharger sur le site Web du Centre de téléchargement Microsoft.Pour obtenir des instructions, consultez Downloading Sample Databases (LINQ to SQL).

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

  1. Dans Visual Studio, ouvrez l'Explorateur de serveurs/Explorateur de bases de données en cliquant sur Explorateur de serveurs ou Explorateur de bases de données dans le menu Affichage.

  2. Dans l'Explorateur de serveurs/Explorateur de bases de données, cliquez avec le bouton droit sur Connexions de données et cliquez sur Ajouter une connexion.

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

Pour ajouter un projet à l'aide d'un fichier LINQ to SQL

  1. Dans le menu Fichier de Visual Studio, 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 Ajouter.Le fichier northwind.dbml s'ouvre dans le Concepteur Objet/Relationnel (Concepteur O/R).

Pour ajouter des tables à interroger et modifier au Concepteur O/R

  1. Dans l'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 dans le volet gauche du concepteur.

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

  3. Enregistrez vos modifications et fermez le concepteur.

  4. Enregistrez votre projet.

Pour ajouter du code en vue de 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 pour 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 pour votre projet est nommé d'après le nom de votre fichier .dbml.Pour ce projet, l'objet DataContext est nommé northwindDataContext.

    Vous pouvez créer une instance de l'objet DataContext dans votre code et interroger et modifier la collection Customers spécifiée par le Concepteur O/R.Les modifications que vous apportez à la collection Customers ne se sont pas répercutées dans la base de données, tant que vous ne les soumettez pas en appelant la méthode SubmitChanges de l'objet DataContext.

    Double-cliquez sur le Windows Form, Form1, pour ajouter le code à l'événement Load et interroger la table Customers exposée comme une propriété de votre DataContext.Ajoutez le code ci-dessous :

    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 vers le formulaire.Sélectionnez le premier contrôle Button.Dans la fenêtre Propriétés, donnez au Name du contrôle Button la valeur AddButton et au Text la valeur Ajouter.Sélectionnez le deuxième bouton et affectez à la propriété Name la valeur UpdateButton et à la propriété Text la valeur Mise à jour.Sélectionnez le troisième bouton et affectez à la propriété Name la valeur DeleteButton et à la propriété Text la valeur Supprimer.

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

    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 Mise à jour pour ajouter le code à son événement Click.Ajoutez le code ci-dessous :

    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"
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  6. Double-cliquez sur le bouton Supprimer pour ajouter le code à son événement Click.Ajoutez le code ci-dessous :

    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 Mise à jour pour modifier le nouvel enregistrement.Cliquez sur Supprimer pour supprimer le nouvel enregistrement.

Voir aussi

Tâches

How to: Assign Stored Procedures to Perform Updates, Inserts, and Deletes (O/R Designer)

Walkthrough: Creating LINQ to SQL Classes (O/R Designer)

Concepts

DataContext Methods (O/R Designer)

Autres ressources

LINQ en Visual Basic

Requêtes (Visual Basic)

LINQ to SQL