Gewusst wie: Ändern von Daten in einer Datenbank mit LINQ (Visual Basic)

Mit LINQ (Language-Integrated Query) ist es einfach, auf Datenbankinformationen zuzugreifen und Werte in einer Datenbank zu ändern.

Im folgenden Beispiel wird gezeigt, wie eine neue Anwendung erstellt wird, mit der in einer SQL Server-Datenbank Informationen abgefragt und aktualisiert werden.

In den Beispielen dieses Themas wird die Beispieldatenbank Northwind verwendet. Wenn die Beispieldatenbank Northwind auf dem Entwicklungscomputer nicht installiert ist, können Sie sie von der Website Microsoft Download Center herunterladen. Anweisungen dazu finden Sie unter Herunterladen von Beispieldatenbanken (LINQ to SQL).

So erstellen Sie eine Verbindung zu einer Datenbank

  1. Öffnen Sie in Visual Studio den Server-Explorer/Datenbank-Explorer, indem Sie auf das Menü Ansicht klicken und dann Server-Explorer/Datenbank-Explorer auswählen.

  2. Klicken Sie im Server-Explorer/Datenbank-Explorer mit der rechten Maustaste auf Datenverbindungen, und klicken Sie dann auf Verbindung hinzufügen.

  3. Geben Sie eine gültige Verbindung zur Beispieldatenbank Northwind an.

So fügen ein Projekt mit einer LINQ to SQL-Datei hinzu

  1. Zeigen Sie in Visual Studio im Menü Datei auf Neu, und klicken Sie auf Projekt. Wählen Sie Visual Basic-Windows Forms-Anwendung als Projekttyp aus.

  2. Klicken Sie im Menü Projekt auf Neues Element hinzufügen. Wählen Sie die Elementvorlage LINQ to SQL-Klassen aus.

  3. Nennen Sie die Datei northwind.dbml. Klicken Sie auf Hinzufügen. Der Object Relational Designer (O/R-Designer) wird für die Datei northwind.dbml geöffnet.

So fügen Sie abzufragende und zu ändernde Tabellen zum Designer hinzu

  1. Erweitern Sie im Server-Explorer/Datenbank-Explorer die Verbindung zur Datenbank Northwind. Erweitern Sie den Ordner Tabellen.

    Wenn Sie den O/R-Designer geschlossen haben, können Sie ihn durch Doppelklicken auf die zuvor hinzugefügte Datei northwind.dbml erneut öffnen.

  2. Klicken Sie auf die Tabelle Customers, und ziehen Sie sie in den linken Bereich des Designers.

    Der Designer erstellt ein neues Customer-Objekt für das Projekt.

  3. Speichern Sie die Änderungen, und schließen Sie den Designer.

  4. Speichern Sie das Projekt.

So fügen Sie Code für Datenbankänderungen und zum Anzeigen der Ergebnisse hinzu

  1. Ziehen Sie aus der Toolbox ein DataGridView-Steuerelement auf das Standard-Windows Form (Form1) des Projekts.

  2. Wenn Sie dem O/R-Designer Tabellen hinzugefügt haben, wurde dem Projekt ein DataContext-Objekt vom Designer hinzugefügt. Dieses Objekt enthält Code, mit dem Sie auf die Customers-Tabelle zugreifen können. Es enthält außerdem Code, der ein lokales Customer-Objekt und eine Customer-Auflistung für die Tabelle definiert. Das DataContext-Objekt des Projekts wird auf Grundlage des Namens der DBML-Datei benannt. Für dieses Projekt lautet der Name des DataContext-Objekts northwindDataContext.

    Sie können im Code eine Instanz des DataContext-Objekts erstellen und die vom O/R-Designer angegebene Customers-Auflistung abrufen und ändern. Änderungen in der Customers-Auflistung wirken sich erst auf die Datenbank aus, wenn sie durch Aufruf der SubmitChanges-Methode des DataContext-Objekts übermittelt wurden.

    Doppelklicken Sie auf das Windows Form, Form1, um Code zum Load-Ereignis hinzuzufügen, mit dem die als eine Eigenschaft des DataContext verfügbar gemachte Customers-Tabelle abgefragt wird. Fügen Sie den folgenden Code hinzu:

    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. Ziehen Sie aus der Toolbox drei Button-Steuerelemente auf das Formular. Wählen Sie das erste Button-Steuerelement aus. Legen Sie im Fenster Eigenschaften die Name-Eigenschaft des Button-Steuerelements auf AddButton und die Text-Eigenschaft auf Hinzufügen fest. Wählen Sie die zweite Schaltfläche aus, und legen Sie die Name-Eigenschaft auf UpdateButton und die Text-Eigenschaft auf Aktualisieren fest. Wählen Sie die dritte Schaltfläche aus, und legen Sie die Name-Eigenschaft auf DeleteButton und die Text-Eigenschaft auf Löschen fest.

  4. Doppelklicken Sie auf die Schaltfläche Hinzufügen, um Code zum Click-Ereignis hinzuzufügen. Fügen Sie den folgenden Code hinzu:

    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. Doppelklicken Sie auf die Schaltfläche Aktualisieren, um Code zum Click-Ereignis hinzuzufügen. Fügen Sie den folgenden Code hinzu:

    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. Doppelklicken Sie auf die Schaltfläche Löschen, um Code zum Click-Ereignis hinzuzufügen. Fügen Sie den folgenden Code hinzu:

    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. Drücken Sie F5, um das Projekt auszuführen. Klicken Sie auf Hinzufügen, um einen neuen Datensatz hinzuzufügen. Klicken Sie auf Aktualisieren, um den neuen Datensatz zu ändern. Klicken Sie auf Löschen, um den neuen Datensatz zu löschen.

Siehe auch

Aufgaben

Vorgehensweise: Zuweisen von gespeicherten Prozeduren zur Durchführung von Update-, Einfüge- und Löschvorgängen (O/R-Designer)

Exemplarische Vorgehensweise: Erstellen von LINQ to SQL-Klassen (O/R-Designer)

Konzepte

DataContext-Methoden (O/R-Designer)

Weitere Ressourcen

LINQ in Visual Basic

Abfragen (Visual Basic)

LINQ to SQL