次の方法で共有


Load メソッド

Load メソッドを使用して、データ ソースの行を DataTable に読み込むことができます。 これはオーバーロードされたメソッドで、最も単純な形式で単一の DataReader パラメーターを受け取ります。 この形式では、行を含む DataTable を読み込むだけです。 必要に応じて、 LoadOption パラメーターを指定して、 DataTable にデータを追加する方法を制御できます。

LoadOption パラメーターは、DataTableにデータ行が既に含まれている場合に特に便利です。これは、データ ソースからの受信データをテーブルに既に含まれているデータと組み合わせる方法を記述するためです。 たとえば、PreserveCurrentValues (既定値) では、Added で行がとしてマークされている場合、Original値または各列は、データ ソースの一致する行の内容に設定されます。 Current値は、行が追加されたときに割り当てられた値を保持し、行のRowState[変更済み] に設定されます。

LoadOption 列挙値の簡単な説明を次の表に示します。

LoadOption の値 説明
OverwriteRow 受信行の PrimaryKey 値が DataTable 内の行と同じである場合、各列の OriginalCurrent の値は受信行の値に置き換えられ、 RowState プロパティは [変更なし] に設定されます。

DataTableにまだ存在しないデータ ソースの行は、RowStateが [変更なし] で追加されます

このオプションは、データ ソースの内容と一致するように、 DataTable の内容を更新します。
PreserveCurrentValues (既定値) 受信行の PrimaryKey 値が DataTable 内の行と同じである場合、 Original 値は受信行の内容に設定され、 Current 値は変更されません。

RowStateAdded または Modified の場合、変更済みに設定されます。

RowState削除された場合、削除されたままになります。

DataTableにまだ存在しないデータ ソースの行が追加され、RowState[変更なし] に設定されます。
UpdateCurrentValues 受信行の PrimaryKey 値が DataTable 内の行と同じ場合、 Current 値が Original 値にコピーされ、 Current 値が受信行の内容に設定されます。

RowStateDataTable追加された場合、RowState[追加] のままです。 Modifiedまたは削除済みとしてマークされた行の場合、RowState変更されます

DataTableにまだ存在しないデータ ソースの行が追加され、RowState[追加] に設定されます。

次の例では、 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

関連項目