Sdílet prostřednictvím


Načtení dat do datové sady

Před DataSet dotazem na objekt musí být nejprve vyplněn objekt pomocí LINQ to DataSet. Existuje několik různých způsobů, jak naplnit DataSet. Můžete například použít LINQ to SQL k dotazování databáze a načtení výsledků do DataSet. Další informace najdete v tématu LINQ to SQL.

Dalším běžným způsobem načtení dat do objektu je DataSet použití DataAdapter třídy k načtení dat z databáze. To je znázorněno v následujícím příkladu.

Příklad

Tento příklad používá DataAdapter k dotazování databáze AdventureWorks informace o prodeji z roku 2002 a načte DataSetvýsledky do . DataSet Po naplnění můžete zapsat dotazy pomocí LINQ to DataSet. Metoda FillDataSet v tomto příkladu se používá v ukázkových dotazech v LINQ to DataSet Examples. Další informace naleznete v tématu Dotazování datových sad.

Try
    Dim connectionString As String

    connectionString = "..."

    ' Create a new adapter and give it a query to fetch sales order, contact,
    ' address, and product information for sales in the year 2002. Point connection
    ' information to the configuration setting "AdventureWorks".
    Dim da = New SqlDataAdapter( _
    "SELECT SalesOrderID, ContactID, OrderDate, OnlineOrderFlag, " & _
        "TotalDue, SalesOrderNumber, Status, ShipToAddressID, BillToAddressID " & _
        "FROM Sales.SalesOrderHeader " & _
        "WHERE DATEPART(YEAR, OrderDate) = @year; " & _
        "SELECT d.SalesOrderID, d.SalesOrderDetailID, d.OrderQty, " & _
        "d.ProductID, d.UnitPrice " & _
        "FROM Sales.SalesOrderDetail d " & _
        "INNER JOIN Sales.SalesOrderHeader h " & _
        "ON d.SalesOrderID = h.SalesOrderID  " & _
        "WHERE DATEPART(YEAR, OrderDate) = @year; " & _
        "SELECT p.ProductID, p.Name, p.ProductNumber, p.MakeFlag, " & _
        "p.Color, p.ListPrice, p.Size, p.Class, p.Style  " & _
        "FROM Production.Product p; " & _
        "SELECT DISTINCT a.AddressID, a.AddressLine1, a.AddressLine2, " & _
        "a.City, a.StateProvinceID, a.PostalCode " & _
        "FROM Person.Address a " & _
        "INNER JOIN Sales.SalesOrderHeader h " & _
        "ON  a.AddressID = h.ShipToAddressID OR a.AddressID = h.BillToAddressID " & _
        "WHERE DATEPART(YEAR, OrderDate) = @year; " & _
        "SELECT DISTINCT c.ContactID, c.Title, c.FirstName, " & _
        "c.LastName, c.EmailAddress, c.Phone " & _
        "FROM Person.Contact c " & _
        "INNER JOIN Sales.SalesOrderHeader h " & _
        "ON c.ContactID = h.ContactID " & _
        "WHERE DATEPART(YEAR, OrderDate) = @year;", _
    connectionString)

    ' Add table mappings.
    da.SelectCommand.Parameters.AddWithValue("@year", 2002)
    da.TableMappings.Add("Table", "SalesOrderHeader")
    da.TableMappings.Add("Table1", "SalesOrderDetail")
    da.TableMappings.Add("Table2", "Product")
    da.TableMappings.Add("Table3", "Address")
    da.TableMappings.Add("Table4", "Contact")

    da.Fill(ds)

    ' Add data relations.
    Dim orderHeader As DataTable = ds.Tables("SalesOrderHeader")
    Dim orderDetail As DataTable = ds.Tables("SalesOrderDetail")
    Dim co As DataRelation = New DataRelation("SalesOrderHeaderDetail", _
                                    orderHeader.Columns("SalesOrderID"), _
                                    orderDetail.Columns("SalesOrderID"), True)
    ds.Relations.Add(co)

    Dim contact As DataTable = ds.Tables("Contact")
    Dim orderContact As DataRelation = New DataRelation("SalesOrderContact", _
                                    contact.Columns("ContactID"), _
                                    orderHeader.Columns("ContactID"), True)
    ds.Relations.Add(orderContact)
Catch ex As SqlException
    Console.WriteLine("SQL exception occurred: " & ex.Message)
End Try

Viz také