Load 方法

您可以使用 Load 方法,載入具有資料來源之資料列的 DataTable。 這是一種多載方法,在其最簡單的形式中,便可以接受單一參數 DataReader。 在這種形式下,它只會載入含有資料列的 DataTable。 此外,您也可以選擇指定 LoadOption 參數來控制將資料新增 DataTable 的方式。

如果 DataTable 已經包含資料列,則 LoadOption 參數特別有用,因為它描述資料來源的傳入資料如何與資料表中已有的資料結合。 例如,PreserveCurrentValues (預設值) 會指定在 DataTable 中的資料列標記為 Added 的情況下,每個資料行的 Original 值會設定為資料來源中之對應列的內容。 Current 值會保留資料列新增時所指定的值,而資料列的 RowState 會設定為 Changed

下列表格簡短說明 LoadOption 列舉值。

LoadOption 值 描述
OverwriteRow 若內送資料列的 PrimaryKey 值與 DataTable 中既有之資料列的值相同,則每個資料行的 OriginalCurrent 值都會由內送資料列的值來取代,並且 RowState 屬性會設定為 Unchanged

資料來源中原本不在 DataTable 內的資料列都會新增,並將 RowState 值設為 Unchanged

此選項會實際重新整理 DataTable 的內容,以符合資料來源的內容。
PreserveCurrentValues (預設值) 若內送資料列的 PrimaryKey 值與 DataTable 中既有之資料列的值相同,則 Original 值會設定為內送資料列的內容,而 Current 值將保持不變。

RowStateAddedModified,則會設定為 Modified

RowState 原本為 Deleted,則會保留為 Deleted

資料來源中原本不在 DataTable 內的資料列都會新增,並將 RowState 設為 Unchanged
UpdateCurrentValues 若內送資料列的 PrimaryKey 值與 DataTable 中既有之資料列的值相同,則 Current 值會複製到 Original 值上,然後 Current 值會設定為內送資料列的內容。

DataTable 中的 RowStateAdded,則 RowState 會保持為 Added。 對於標記為 ModifiedDeleted 的資料列,RowState 皆為 Modified

資料來源中原本不在 DataTable 內的資料列都會新增,並將 RowState 設為 Added

下列範例將使用 Load 方法,顯示 Northwind 資料庫中的員工生日清單。

Private Sub LoadBirthdays(ByVal connectionString As String)  
    ' Assumes that connectionString is a valid connection string  
    ' to the Northwind database on SQL Server.  
    Dim queryString As String = _  
    "SELECT LastName, FirstName, BirthDate " & _  
      " FROM dbo.Employees " & _  
      "ORDER BY BirthDate, LastName, FirstName"  
  
    ' Open and fill a DataSet.
    Dim adapter As SqlDataAdapter = New SqlDataAdapter( _  
        queryString, connectionString)  
    Dim employees As New DataSet  
    adapter.Fill(employees, "Employees")  
  
    ' Create a SqlDataReader for use with the Load Method.  
    Dim reader As DataTableReader = employees.GetDataReader()  
  
    ' Create an instance of DataTable and assign the first  
    ' DataTable in the DataSet.Tables collection to it.  
    Dim dataTableEmp As DataTable = employees.Tables(0)  
  
    ' Fill the DataTable with data by calling Load and  
    ' passing the SqlDataReader.  
    dataTableEmp.Load(reader, LoadOption.OverwriteRow)  
  
    ' Loop through the rows collection and display the values  
    ' in the console window.  
    Dim employeeRow As DataRow  
    For Each employeeRow In dataTableEmp.Rows  
        Console.WriteLine("{0:MM\\dd\\yyyy}" & ControlChars.Tab & _  
          "{1}, {2}", _  
          employeeRow("BirthDate"), _  
          employeeRow("LastName"), _  
          employeeRow("FirstName"))  
    Next employeeRow  
  
    ' Keep the window opened to view the contents.  
    Console.ReadLine()  
End Sub  

另請參閱