Erstellen parametrisierter TableAdapter-Abfragen in .NET Framework-Anwendungen

Hinweis

Datasets und verwandte Klassen sind ältere .NET-Technologien aus den frühen 2000er Jahren, die es Anwendungen ermöglichen, mit Daten im Arbeitsspeicher zu arbeiten, während die Anwendungen von der Datenbank getrennt sind. Die Technologien sind besonders nützlich für Anwendungen, die es Benutzern ermöglichen, Daten zu ändern und die Änderungen wieder in der Datenbank zu speichern. Obwohl sich Datasets als sehr erfolgreiche Technologie erwiesen haben, empfehlen wir, dass neue .NET-Anwendungen Entity Framework Core verwenden. Entity Framework bietet eine natürlichere Möglichkeit, mit tabellarischen Daten als Objektmodelle zu arbeiten, und verfügt über eine einfachere Programmierschnittstelle.

Eine parametrisierte Abfrage gibt Daten zurück, die den Bedingungen einer WHERE-Klausel in der Abfrage entsprechen. Sie können beispielsweise eine Kundenliste parametrisieren, sodass nur Kunden in einem bestimmten Ort angezeigt werden. Fügen Sie dazu WHERE City = @City am Ende der SQL-Anweisung hinzu, was eine Liste von Kunden ausgibt.

Sie können parametrisierte TableAdapter-Abfragen im DataSet-Designer erstellen, oder Sie verwenden dazu in einer Windows-Anwendung den Befehl Datenquelle parametrisieren im Menü Daten. Über den Befehl Datenquelle parametrisieren werden Steuerelemente in Ihrem Formular erstellt, die Sie zur Eingabe der Parameterwerte sowie zum Ausführen der Abfrage verwenden können.

Hinweis

Beim Erstellen einer parametrisieren Abfrage verwenden Sie die spezifische Parameternotation der Datenbank, für die Sie den Code schreiben. Zum Beispiel verwenden Access- und OleDb-Datenquellen das Fragezeichen (?) zur Angabe von Parametern, sodass die WHERE-Klausel wie folgt aussieht: WHERE City = ?.

Erstellen einer parametrisieren TableAdapter-Abfrage

So erstellen Sie parametrisierte Abfrage im DataSet-Designer

  • Erstellen Sie einen neuen TableAdapter und fügen Sie eine WHERE-Klausel mit den gewünschten Parametern der SQL-Anweisung hinzu. Weitere Informationen finden Sie unter Erstellen und Konfigurieren von TableAdapters.

    or

  • Fügen Sie eine Abfrage zu einem vorhandenen TableAdapter hinzu und dann eine WHERE-Klausel mit den gewünschten Parametern für die SQL-Anweisung.

So erstellen Sie eine parametrisierte Abfrage beim Entwerfen eines datengebundenen Formulars

  1. Wählen Sie ein Steuerelement auf dem Formular, das bereits an ein Dataset gebunden ist. Weitere Informationen finden Sie unter Binden von Windows Forms-Steuerelementen an Daten in Visual Studio.

  2. Wählen Sie im Menü Daten die Option Abfrage hinzufügen aus.

  3. Füllen Sie das Dialogfeld Suchkriterien-Generator aus, und fügen Sie dann eine WHERE-Klausel mit den gewünschten Parametern für die SQL-Anweisung hinzu.

So fügen Sie eine Abfrage einem vorhandenen datengebundenen Formular hinzu

  1. Öffnen Sie das Formular im Windows Forms-Designer.

  2. Wählen Sie im Menü Daten die Option Abfrage hinzufügen oder Smarttags für Daten aus.

    Hinweis

    Wenn Abfrage hinzufügen im Menü Daten nicht verfügbar ist, wählen Sie ein Steuerelement auf dem Formular, das die Datenquelle anzeigt, der Sie die Parametrisierung hinzufügen möchten. Wenn das Formular beispielsweise Daten in einem DataGridView-Steuerelement anzeigt, wählen Sie dieses aus. Wenn das Formular Daten in einzelnen Steuerelementen anzeigt, wählen Sie irgendein datengebundenes Steuerelement.

  3. Wählen Sie im Bereich Datenquellentabelle auswählen die Tabelle aus, der Sie eine Parametrisierung hinzufügen möchten.

  4. Geben Sie den Namen in das Feld Neuer Abfragename ein, wenn Sie eine neue Abfrage erstellen.

    or

    Wählen Sie eine Abfrage im Feld Vorhandener Abfragename aus.

  5. Geben Sie im Feld Abfragetext eine Abfrage ein, die Parameter akzeptiert.

  6. Wählen Sie OK aus.

    Es wird ein Steuerelement für die Eingabe des Parameters sowie eine Schaltfläche Laden zum Formular in einem ToolStrip-Steuerelement hinzugefügt.

Abfrage auf NULL-Werte

TableAdapter-Parametern können NULL-Werte zugewiesen werden, wenn Sie Datensätze abfragen möchten, die keinen aktuellen Wert aufweisen. Betrachten Sie zum Beispiel die folgende Abfrage, die einen WHERE-Parameter in der ShippedDate-Klausel enthält:

SELECT CustomerID, OrderDate, ShippedDate
FROM Orders
WHERE (ShippedDate = @ShippedDate) OR (ShippedDate IS NULL)

Wenn es sich um eine TableAdapter-Abfrage handeln würde, könnten Sie mit dem folgenden Code alle Bestellungen abfragen, die noch nicht versandt wurden:

ordersTableAdapter.FillByShippedDate(northwindDataSet.Orders, null);

So aktivieren Sie eine Abfrage, die NULL-Werte akzeptiert

  1. Wählen Sie im DataSet-Designer die TableAdapter-Abfrage aus, die NULL-Parameterwerte akzeptieren muss.

  2. Wählen Sie im Fenster Eigenschaften Parameter aus, und wählen Sie dann die Schaltfläche mit den Auslassungspunkten (...) aus, um den Editor für die Parameterauflistung zu öffnen.

  3. Wählen Sie den Parameter aus, der NULL-Werte zulassen soll, und legen Sie die Eigenschaft AllowDbNull auf true fest.