Sdílet prostřednictvím


Dotaz datové sady

 

K vyhledání konkrétních záznamů v datové sadě, použijte metodu FindBy ve DataTable, nebo můžete napsat vlastní smyčka typu foreach prostřednictvím kolekce řádků v tabulce nebo můžete použít LINQ to DataSet. LINQ na DataSet.

Rozlišování datové sady

V rámci datové sady, názvy tabulek a sloupců jsou ve výchozím nastavení velká a malá písmena – to znamená, tabulky v datové sadě názvem Zákazníci"lze také odkazovat jako zákazníci." To odpovídá konvence pojmenování v mnoha databází, včetně výchozí chování systému SQL Server, kde názvy prvků dat nelze rozlišit pouze případu.

Poznámka

Na rozdíl od datové sady jsou malá a velká písmena, dokumentů XML, takže názvy datové prvky, které jsou definovány v schémata jsou malá a velká písmena. Například protokol schématu umožňuje schématu můžete definovat tabulku s názvem "Zákazníci" a jiné tabulky názvem Zákazníci." To může vést k kolize názvů po schématu, který obsahuje prvky, které se liší pouze v případě slouží ke generování třídy datové sady.

Rozlišování velkých a malých písmen však může být faktorem jak data interpretována v rámci datové sady. Například pokud filtrování dat v tabulce dataset kritéria hledání může vrátit různé výsledky v závislosti na tom, zda je porovnání velká a malá písmena či nikoli. Můžete ovládat rozlišování velikosti písmen filtrování, vyhledávání a třídění nastavením datovou sadu CaseSensitive vlastnost. Podle výchozího nastavení dědí všechny tabulky v datové sadě hodnota této vlastnosti. (Tato vlastnost pro každou jednotlivou tabulku lze přepsat nastavením v tabulce CaseSensitive vlastnost.)

Vyhledání konkrétní řádek v tabulce dat

K vyhledání řádku v typové datové sady s hodnotou primárního klíče

  • Volání silného typu FindBy metody, která používá primární klíč v tabulce vyhledejte řádek.

    V následujícím příkladu CustomerID primární klíč je sloupec Customers tabulky, takže generované FindBy Metoda je FindByCustomerID. Tento příklad ukazuje, jak přiřadit konkrétní DataRow proměnné pomocí generované FindBy Metoda.

                NorthwindDataSet.CustomersRow customersRow = 
                    northwindDataSet1.Customers.FindByCustomerID("ALFKI");
    
            Dim customersRow As NorthwindDataSet.CustomersRow
            customersRow = NorthwindDataSet1.Customers.FindByCustomerID("ALFKI")
    

K vyhledání řádku v netypové datové sady s hodnotou primárního klíče

  • Volání Find metodu DataRowCollection kolekce předávání primárního klíče jako parametr.

    Následující příklad ukazuje, jak deklarovat nový řádek, který se nazývá foundRow a přiřaďte je vrácená hodnota Find Metoda. Pokud je nalezen primární klíč, obsah index sloupce 1 jsou zobrazeny v okně se zprávou.

                string s = "primaryKeyValue";
                DataRow foundRow = dataSet1.Tables["AnyTable"].Rows.Find(s);
    
                if (foundRow != null) 
                {
                    MessageBox.Show(foundRow[0].ToString());
                }
                else
                {
                    MessageBox.Show("A row with the primary key of " + s + " could not be found");
                }
    
            Dim s As String = "primaryKeyValue"
            Dim foundRow As DataRow = DataSet1.Tables("AnyTable").Rows.Find(s)
    
            If foundRow IsNot Nothing Then
                MsgBox(foundRow(1).ToString())
            Else
                MsgBox("A row with the primary key of " & s & " could not be found")
            End If
    

Hledání řádky podle hodnoty sloupců

Chcete-li najít řádky na základě hodnot v jakémkoli sloupci

  • Tabulky dat jsou vytvořeny pomocí Select metodu, která vrací pole DataRows založené na výrazu předat Select Metoda. Další informace o vytváření platné výrazy, naleznete v části "Syntaxe výrazu" stránky Expression vlastnost.

    Následující příklad ukazuje způsob použití Select metodu DataTable k vyhledání konkrétních řádků.

                DataRow[] foundRows;
                foundRows = dataSet1.Tables["Customers"].Select("CompanyName Like 'A%'");
    
            Dim foundRows() As Data.DataRow
            foundRows = DataSet1.Tables("Customers").Select("CompanyName Like 'A%'")
    

Přístup k souvisejících záznamů

Pokud v datové sadě tabulkami, DataRelation objektu můžete zpřístupnit souvisejících záznamů v druhé tabulce. Například datové sady obsahujícího Customers a Orders tabulky může být k dispozici.

Můžete použít DataRelation objektu k vyhledání souvisejících záznamů pomocí volání GetChildRows metodu DataRow v nadřazené tabulce; tato metoda vrátí pole související podřízené záznamy. Nebo můžete volat GetParentRow metodu DataRow v podřízené tabulce; tato metoda vrátí jednu DataRow z nadřazené tabulky.

Tato stránka nápovědy poskytuje příklady použití typové datové sady. Informace týkající se přechodu vztahy v datových sadách bez typu naleznete v tématu Navigating DataRelations.

Poznámka

Pokud pracujete v aplikaci Windows Forms a pomocí funkce vazby dat pro zobrazení dat, návrháře generovaném formuláři poskytují dostatek funkce pro vaši aplikaci. Další informace naleznete na stránkách na Vytvoření vazby ovládacích prvků k datům v sadě Visual Studio, konkrétně Postupy: Zobrazení souvisejících dat ve formulářové aplikaci Windows a Návod: Zobrazování souvisejících dat ve formuláři Windows.

Následující příklady kódu ukazují navigace nahoru a dolů vztahy v typových datových sadách. Jejich použití zadali DataRows (NorthwindDataSet.OrdersRow) a generované FindByPrimaryKey (FindByCustomerID) metody pro vyhledání požadovaného řádku a vrácení souvisejících záznamů. Příklady kompilaci a spuštění správně pouze v případě, že máte:

  • Instance datovou sadu s názvem NorthwindDataSet s Customers tabulky

  • Orders Tabulky

  • Relace s názvem FK_Orders_Customers týkající se dvou tabulek, které jsou k dispozici oboru kódu

Dále je třeba obou tabulek vyplněn data pro všechny záznamy mají být vráceny.

Vrátit podřízené záznamy vybraný nadřazený záznam

  • Volání GetChildRows Metoda konkrétní Customers řádek dat a vrácení pole řádků z Orders tabulky:

                string custID = "ALFKI";
                NorthwindDataSet.OrdersRow[] orders;
    
                orders = (NorthwindDataSet.OrdersRow[])northwindDataSet.Customers.
                    FindByCustomerID(custID).GetChildRows("FK_Orders_Customers");
    
                MessageBox.Show(orders.Length.ToString());
    
            Dim customerID As String = "ALFKI"
            Dim orders() As NorthwindDataSet.OrdersRow
    
            orders = CType(NorthwindDataSet.Customers.FindByCustomerID(customerID).
                GetChildRows("FK_Orders_Customers"), NorthwindDataSet.OrdersRow())
    
            MessageBox.Show(orders.Length.ToString())
    

Chcete-li vrátit nadřazený záznam vybraný podřízený záznam

  • Volání GetParentRow Metoda konkrétní Orders řádek dat a vrátí jeden řádek z Customers tabulky:

                int orderID = 10707;
                NorthwindDataSet.CustomersRow customer;
    
                customer = (NorthwindDataSet.CustomersRow)northwindDataSet.Orders.
                    FindByOrderID(orderID).GetParentRow("FK_Orders_Customers");
    
                MessageBox.Show(customer.CompanyName); 
    
            Dim orderID As Integer = 10707
            Dim customer As NorthwindDataSet.CustomersRow
    
            customer = CType(NorthwindDataSet.Orders.FindByOrderID(orderID).
                GetParentRow("FK_Orders_Customers"), NorthwindDataSet.CustomersRow)
    
            MessageBox.Show(customer.CompanyName)