Wykonywanie zapytań dotyczących zestawów danych w aplikacjach .NET Framework
Uwaga
Zestawy danych i powiązane klasy to starsze technologie .NET Framework z początku 2000 roku, które umożliwiają aplikacjom pracę z danymi w pamięci, gdy aplikacje są odłączone od bazy danych. Technologie te są szczególnie przydatne w przypadku aplikacji, które umożliwiają użytkownikom modyfikowanie danych i utrwalanie zmian z powrotem w bazie danych. Mimo że zestawy danych okazały się bardzo udaną technologią, zalecamy, aby nowe aplikacje platformy .NET używały platformy Entity Framework Core. Program Entity Framework zapewnia bardziej naturalny sposób pracy z danymi tabelarycznymi jako modelami obiektów i ma prostszy interfejs programowania.
Aby wyszukać określone rekordy w zestawie danych, użyj FindBy
metody w tabeli DataTable, napisz własną instrukcję foreach, aby utworzyć pętlę w kolekcji Wiersze tabeli lub użyć linQ to DataSet.
Ważność wielkości liter zestawu danych
W zestawie danych nazwy tabel i kolumn są domyślnie niewrażliwe na wielkość liter — czyli tabelę w zestawie danych o nazwie "Klienci" można również określać jako "Klienci". Jest to zgodne z konwencjami nazewnictwa w wielu bazach danych, w tym z programem SQL Server. W programie SQL Server domyślne zachowanie polega na tym, że nazwy elementów danych nie mogą być rozróżniane tylko według wielkości liter.
Uwaga
W przeciwieństwie do zestawów danych dokumenty XML są uwzględniane wielkości liter, więc nazwy elementów danych zdefiniowanych w schematach są uwzględniane wielkości liter. Na przykład protokół schematu umożliwia zdefiniowanie tabeli o nazwie Customers
i innej tabeli o nazwie customers
. Może to spowodować kolizje nazw, gdy schemat zawierający elementy, które różnią się tylko wielkością liter, jest używany do generowania klasy zestawu danych.
Jednak czułość wielkości liter może być czynnikiem, w jaki sposób dane są interpretowane w zestawie danych. Na przykład w przypadku filtrowania danych w tabeli zestawu danych kryteria wyszukiwania mogą zwracać różne wyniki w zależności od tego, czy w porównaniu jest uwzględniana wielkość liter. Można kontrolować wielkość liter filtrowania, wyszukiwania i sortowania, ustawiając właściwość zestawu danych CaseSensitive . Wszystkie tabele w zestawie danych dziedziczą wartość tej właściwości domyślnie. (Tę właściwość można zastąpić dla każdej tabeli, ustawiając właściwość tabeli CaseSensitive ).
Lokalizowanie określonego wiersza w tabeli danych
Aby znaleźć wiersz w typowanym zestawie danych z wartością klucza podstawowego
Aby zlokalizować wiersz, wywołaj metodę silnie typizowana
FindBy
, która używa klucza podstawowego tabeli.W poniższym przykładzie kolumna
CustomerID
jest kluczemCustomers
podstawowym tabeli. Oznacza to, że wygenerowanaFindBy
metoda toFindByCustomerID
. W przykładzie pokazano, jak przypisać określony DataRow element do zmiennej przy użyciu metody wygenerowanejFindBy
.
Aby znaleźć wiersz w nietypowym zestawie danych z wartością klucza podstawowego
Wywołaj Find metodę DataRowCollection kolekcji, przekazując klucz podstawowy jako parametr.
W poniższym przykładzie pokazano, jak zadeklarować nowy wiersz o nazwie
foundRow
i przypisać mu zwracaną wartość Find metody. Jeśli klucz podstawowy zostanie znaleziony, zawartość indeksu kolumny 1 zostanie wyświetlona w oknie komunikatu.
Znajdowanie wierszy według wartości kolumn
Aby znaleźć wiersze na podstawie wartości w dowolnej kolumnie
Tabele danych są tworzone za pomocą Select metody , która zwraca tablicę DataRows na podstawie wyrażenia przekazanego Select do metody. Aby uzyskać więcej informacji na temat tworzenia prawidłowych wyrażeń, zobacz sekcję "Składnia wyrażeń" na stronie dotyczącej Expression właściwości.
W poniższym przykładzie pokazano, jak użyć Select metody w DataTable celu zlokalizowania określonych wierszy.
Uzyskiwanie dostępu do rekordów pokrewnych
Gdy tabele w zestawie danych są powiązane, DataRelation obiekt może udostępnić powiązane rekordy w innej tabeli. Na przykład można udostępnić zestaw danych zawierający Customers
tabele i Orders
.
Za pomocą DataRelation obiektu można zlokalizować powiązane rekordy, wywołując GetChildRows metodę DataRow w tabeli nadrzędnej. Ta metoda zwraca tablicę powiązanych rekordów podrzędnych. Możesz też wywołać metodę GetParentRow elementu DataRow w tabeli podrzędnej. Ta metoda zwraca jedną DataRow z tabeli nadrzędnej.
Ta strona zawiera przykłady użycia typowanych zestawów danych. Aby uzyskać informacje na temat nawigowania po relacjach w nietypowych zestawach danych, zobacz Nawigowanie po danychRelacje.
Uwaga
Jeśli pracujesz w aplikacji Windows Forms i używasz funkcji powiązania danych do wyświetlania danych, formularz wygenerowany przez projektanta może zapewnić wystarczającą funkcjonalność aplikacji. Aby uzyskać więcej informacji, zobacz Wiązanie kontrolek z danymi w programie Visual Studio. W szczególności zobacz Relacje w zestawach danych.
W poniższych przykładach kodu pokazano, jak przechodzić w górę i w dół relacji w typowanych zestawach danych. Przykłady kodu używają typowanych DataRows (NorthwindDataSet.OrdersRow
) i wygenerowanych metod FindByPrimaryKey (FindByCustomerID
), aby zlokalizować żądany wiersz i zwrócić powiązane rekordy. Przykłady są kompilowane i uruchamiane poprawnie tylko wtedy, gdy:
Wystąpienie zestawu danych o nazwie
NorthwindDataSet
z tabeląCustomers
.Tabela
Orders
.Relacja o nazwie
FK_Orders_Customers
odnoszącej się do dwóch tabel.
Ponadto obie tabele muszą być wypełnione danymi, aby zwracane były wszystkie rekordy.
Aby zwrócić rekordy podrzędne wybranego rekordu nadrzędnego
Wywołaj metodę GetChildRows określonego
Customers
wiersza danych i zwróć tablicę wierszy zOrders
tabeli:
Aby zwrócić rekord nadrzędny wybranego rekordu podrzędnego
Wywołaj metodę GetParentRow określonego
Orders
wiersza danych i zwróć pojedynczy wiersz zCustomers
tabeli: