Abfragen von Datasets 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.
Für die Suche nach bestimmten Datensätzen in einem Dataset verwenden Sie die FindBy
-Methode für die DataTable, schreiben Ihre eigene foreach-Anweisung, um eine Schleife über die Rows-Sammlung der Tabelle zu erstellen, oder verwenden LINQ to DataSet.
Groß-/Kleinschreibung von Datasets
In einem Dataset wird bei Tabellen- und Spaltennamen die Groß-/Kleinschreibung standardmäßig nicht beachtet. Das heißt, eine Tabelle in einem Dataset namens „Customers“ kann auch als „customers“ bezeichnet werden. Dies entspricht den Benennungskonventionen in vielen Datenbanken, einschließlich SQL Server. In SQL Server ist das Standardverhalten, dass die Namen von Datenelementen nicht nur nach Groß- und Kleinschreibung unterschieden werden können.
Hinweis
Im Gegensatz zu Datasets beachten XML-Dokumente die Groß-/Kleinschreibung, sodass bei den Namen der in Schemas definierten Datenelemente die Groß-/Kleinschreibung beachtet wird. Das Schemenprotokoll ermöglicht es dem Schema beispielsweise, eine Tabelle mit dem Namen Customers
und eine andere Tabelle mit dem Namen customers
. Dies kann zu Namenskonflikten führen, wenn ein Schema, das Elemente enthält, die sich nur durch die Groß-/Kleinschreibung unterscheiden, zur Erstellung einer DataSet-Kklasse verwendet wird.
Die Groß-/Kleinschreibung kann jedoch ein Faktor bei der Interpretation von Daten innerhalb des Datasets sein. Wenn Sie beispielsweise Daten in einer Datasettabelle filtern, können die Suchkriterien unterschiedliche Ergebnisse zurückgeben, je nachdem, ob beim Vergleich die Groß-/Kleinschreibung beachtet wird. Sie können die Groß-/Kleinschreibung beim Filtern, Suchen und Sortieren steuern, indem Sie die Eigenschaft CaseSensitive des Datasets festlegen. Alle Tabellen im Dataset erben standardmäßig den Wert dieser Eigenschaft. (Sie können diese Eigenschaft für jede einzelne Tabelle überschreiben, indem Sie die Eigenschaft CaseSensitive der Tabelle festlegen.)
Suchen einer bestimmten Zeile in einer Datentabelle
So suchen Sie eine Zeile in einem typisierten Dataset mit einem Primärschlüsselwert
Rufen Sie zum Suchen einer Zeile die stark typisierte
FindBy
-Methode auf, die den Primärschlüssel der Tabelle verwendet.Im folgenden Beispiel ist die Spalte
CustomerID
der Primärschlüssel der TabelleCustomers
. Dies bedeutet, dass die generierteFindBy
-MethodeFindByCustomerID
ist. Das Beispiel zeigt, wie Sie einer Variablen mithilfe der generiertenFindBy
-Methode eine bestimmte DataRow zuweisen.
So suchen Sie eine Zeile in einem nicht typisierten Dataset mit einem Primärschlüsselwert
Rufen Sie die Find-Methode einer DataRowCollection-Sammlung auf, und übergeben Sie den Primärschlüssel als Parameter.
Das folgende Beispiel zeigt, wie Sie eine neue Zeile mit dem Namen
foundRow
deklarieren und ihr den Rückgabewert der Find-Methode zuweisen. Wenn der Primärschlüssel gefunden wird, wird der Inhalt des Spaltenindex 1 in einem Meldungsfeld angezeigt.
Suchen von Zeilen nach Spaltenwerten
So suchen Sie Zeilen basierend auf den Werten in einer beliebigen Spalte
Datentabellen werden mit der Select-Methode erstellt, die ein Array von DataRows basierend auf dem an die Select-Methode übergebenen Ausdruck zurückgibt. Weitere Informationen zum Erstellen gültiger Ausdrücke finden Sie im Abschnitt „Ausdruckssyntax“ der Seite über die Expression-Eigenschaft.
Das folgende Beispiel zeigt, wie Sie die Select-Methode von DataTable verwenden, um nach bestimmten Zeilen zu suchen.
Zugriff auf zugehörige Datensätze
Wenn Tabellen in einem Dataset miteinander verknüpft sind, kann ein DataRelation-Objekt die zugehörigen Datensätze in einer anderen Tabelle verfügbar machen. Beispielsweise kann ein Dataset, das die Tabellen Customers
und Orders
enthält, zur Verfügung gestellt werden.
Sie können ein DataRelation-Objekt verwenden, um zugehörige Datensätze zu suchen, indem Sie die GetChildRows-Methode einer DataRow in der übergeordneten Tabelle aufrufen. Diese Methode gibt ein Array verwandter untergeordneter Datensätze zurück. Alternativ können Sie die GetParentRow-Methode einer DataRow in der untergeordneten Tabelle aufrufen. Diese Methode gibt eine einzelne DataRow aus der übergeordneten Tabelle zurück.
Diese Seite enthält Beispiele für die Verwendung typisierter Datasets. Informationen zum Navigieren in Beziehungen in nicht typisierten Datasets finden Sie unter Navigieren in DataRelations.
Hinweis
Wenn Sie in einer Windows Forms-Anwendung arbeiten und die Datenbindungsfeatures zum Anzeigen von Daten verwenden, bietet das vom Designer generierte Formular möglicherweise genügend Funktionen für Ihre Anwendung. Weitere Informationen finden Sie unter Binden von Steuerelementen an Daten in Visual Studio. Siehe insbesondere Beziehungen in Datasets.
Die folgenden Codebeispiele veranschaulichen, wie Sie in typisierten Datasets nach oben und unten navigieren. In den Codebeispielen werden typisierte DataRows (NorthwindDataSet.OrdersRow
) und die generierten FindByPrimaryKey (FindByCustomerID
)-Methoden verwendet, um eine gewünschte Zeile zu finden und die zugehörigen Datensätze zurückzugeben. Die Beispiele werden nur ordnungsgemäß kompiliert und ausgeführt, wenn Sie Folgendes haben:
Eine Instanz eines Datasets mit dem Namen
NorthwindDataSet
mit einerCustomers
-Tabelle.Eine
Orders
-Tabelle.Eine Beziehung namens
FK_Orders_Customers
, die die beiden Tabellen einander zuordnen soll.
Darüber hinaus müssen beide Tabellen mit Daten gefüllt werden, damit Datensätze zurückgegeben werden können.
So geben Sie die untergeordneten Datensätze eines ausgewählten übergeordneten Datensatzes zurück
Rufen Sie die GetChildRows-Methode einer bestimmten
Customers
-Datenzeile auf, und geben Sie ein Array von Zeilen aus derOrders
-Tabelle zurück:
So geben Sie den übergeordneten Datensatz eines ausgewählten untergeordneten Datensatzes zurück
Rufen Sie die GetParentRow-Methode einer bestimmten
Orders
-Datenzeile auf, und geben Sie eine einzelne Zeile aus derCustomers
-Tabelle zurück: