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
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.
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.
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
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.
Dans le menu Projet, cliquez sur Ajouter un nouvel élément.Sélectionnez le modèle d'élément Classes LINQ to SQL.
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
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.
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.
Enregistrez vos modifications et fermez le concepteur.
Enregistrez votre projet.
Pour ajouter du code en vue de modifier la base de données et afficher les résultats
À partir de la Boîte à outils, faites glisser un contrôle DataGridView sur le Windows Form par défaut pour votre projet, Form1.
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
À 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.
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
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
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
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)