クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Visual Studio 2005
Visual Studio ドキュメント
データへのアクセス
ADO.NET
ADO.NET での DataSet の使用
 DataSet の内容のコピー

  低帯域幅での表示をオンにする
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2005/.NET Framework 2.0

その他のバージョンについては、以下の情報を参照してください。
.NET Framework 開発者ガイド
DataSet の内容のコピー

DataSet のコピーを作成すると、元のデータに影響せずにデータを使用したり、DataSet のデータのサブセットを使用したりできます。DataSet をコピーすると、次の操作を行うことができます。

  • スキーマ、データ、行状態情報、行バージョンなどの DataSet の正確なコピーを作成できます。

  • 既存の DataSet のスキーマを含み、行だけを変更した DataSet を作成できます。変更されたすべての行を返したり、特定の DataRowState を指定したりできます。行の状態の詳細については、「行の状態とバージョン」を参照してください。

  • 行をコピーせずに、DataSet のスキーマ (リレーショナル構造) だけをコピーできます。ImportRow を使用して、行を既存の DataTable にインポートできます。

スキーマとデータを含む DataSet の正確なコピーを作成するには、DataSetCopy メソッドを使用します。DataSet の正確なコピーを作成する方法を次のコード サンプルに示します。

Visual Basic
Dim copyDataSet As DataSet = customerDataSet.Copy()
C#
DataSet copyDataSet = customerDataSet.Copy();

スキーマ、およびデータが AddedModified、または Deleted である行だけを含む DataSet のコピーを作成するには、DataSetGetChanges メソッドを使用します。また、GetChanges の呼び出し時に DataRowState の値を渡すことによって、GetChanges を使用して特定の行状態の行だけを返すことができます。GetChanges の呼び出し時に DataRowState を渡す方法を次のコード サンプルに示します。

Visual Basic
' Copy all changes.
Dim changeDataSet As DataSet = customerDataSet.GetChanges()
' Copy only new rows.
Dim addedDataSetAs DataSet = _
    customerDataSet.GetChanges(DataRowState.Added)
C#
// Copy all changes.
DataSet changeDataSet = customerDataSet.GetChanges();
// Copy only new rows.
DataSet addedDataSet= customerDataSet.GetChanges(DataRowState.Added);

スキーマだけを含む DataSet のコピーを作成するには、DataSetClone メソッドを使用します。また、DataTable の ImportRow メソッドを使用して、複製した DataSet に既存の行を追加することもできます。ImportRow メソッドを使用すると、データ、行の状態、および行バージョンの情報が指定したテーブルに追加されます。列名が一致し、データ型が互換性のある型の場合には、列の値だけが追加されます。

DataSet のクローンを作成し、CountryRegion 列の値が "Germany" の顧客に対する DataSet のクローン内の Customers テーブルに、元の DataSet の行を追加するコード サンプルを次に示します。

Visual Basic
Dim germanyCustomers As DataSet = customerDataSet.Clone()

Dim copyRows() As DataRow = _
  customerDataSet.Tables("Customers").Select("CountryRegion = 'Germany'")

Dim customerTable As DataTable = germanyCustomers.Tables("Customers")
Dim copyRow As DataRow

For Each copyRow In copyRows
  customerTable.ImportRow(copyRow)
Next
C#
DataSet germanyCustomers = customerDataSet.Clone();

DataRow[] copyRows = 
  customerDataSet.Tables["Customers"].Select("CountryRegion = 'Germany'");

DataTable customerTable = germanyCustomers.Tables["Customers"];

foreach (DataRow copyRow in copyRows)
  customerTable.ImportRow(copyRow);

参照

コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker