System.Data 名前空間


.NET Framework クラス ライブラリ
DataSet クラス

更新 : 2007 年 11 月

データのメモリ内キャッシュを表します。

名前空間 :  System.Data
アセンブリ :  System.Data (System.Data.dll 内)
構文

Visual Basic (宣言)
<SerializableAttribute> _
Public Class DataSet _
    Inherits MarshalByValueComponent _
    Implements IListSource, IXmlSerializable, ISupportInitializeNotification, ISupportInitialize,  _
    ISerializable
Visual Basic (使用法)
Dim instance As DataSet
C#
[SerializableAttribute]
public class DataSet : MarshalByValueComponent, IListSource, 
    IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable
Visual C++
[SerializableAttribute]
public ref class DataSet : public MarshalByValueComponent, 
    IListSource, IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable
J#
/** @attribute SerializableAttribute */ 
public class DataSet extends MarshalByValueComponent implements IListSource, 
    IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable
JScript
public class DataSet extends MarshalByValueComponent implements IListSource, IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable
解説

データ ソースから取得されたデータのメモリ内キャッシュである DataSet は、ADO.NET アーキテクチャの主要コンポーネントです。DataSet は、DataRelation オブジェクトと相互に関連付けることができる DataTable オブジェクトのコレクションで構成されます。UniqueConstraint オブジェクトと ForeignKeyConstraint オブジェクトを使用して、DataSet 内でデータの整合性を適用することもできます。DataSet オブジェクトの使用の詳細については、「DataSet の使用 (ADO.NET)」を参照してください。

DataTable オブジェクトにはデータを格納できるのに対して、DataRelationCollection を使用するとテーブルの階層構造内を移動できます。テーブルは、Tables プロパティを使用してアクセスできる DataTableCollection に格納されます。DataTable オブジェクトにアクセスするときは、条件付きで大文字と小文字が区別されることに注意してください。たとえば、"mydatatable" という名前の DataTable と "Mydatatable" という名前のテーブルがある場合は、この 2 つのテーブルのどちらかを検索する文字列は大文字と小文字を区別すると見なされます。ただし、"mydatatable" という名前は存在するが "Mydatatable" という名前が存在しない場合は、検索文字列は大文字と小文字を区別しないと見なされます。DataTable オブジェクトの使用の詳細については、「DataTable の作成 (ADO.NET)」を参照してください。

DataSet では、データとスキーマを XML ドキュメントとして読み取ったり、書き込んだりできます。読み込んだデータとスキーマは、HTTP で転送でき、XML 対応のすべてのプラットフォームおよびアプリケーションで使用できます。スキーマを XML スキーマとして保存するには WriteXmlSchema メソッドを使用します。スキーマとデータの両方を保存するには WriteXml メソッドを使用します。スキーマとデータの両方を含む XML ドキュメントを読み取るには、ReadXml メソッドを使用します。

通常の多階層の実装で DataSet を作成および更新し、次に元のデータを更新するステップを次に示します。

  1. DataAdapter を使用して、DataSet 内に DataTable を作成し、各テーブルにデータ ソースのデータを格納します。

  2. DataRow オブジェクトを追加、更新、または削除して、個別の DataTable オブジェクト内のデータを変更します。

  3. GetChanges メソッドを呼び出して、データへの変更だけを格納する 2 つ目の DataSet を作成します。

  4. この 2 つ目の DataSet を引数として渡して、DataAdapterUpdate メソッドを呼び出します。

  5. Merge を呼び出して、2 つ目の DataSet に格納された変更を最初のデータセットにマージします。

  6. DataSetAcceptChanges を呼び出します。変更をキャンセルするには、RejectChanges を呼び出します。

bwy42y0e.alert_note(ja-jp,VS.90).gifメモ :

DataSet オブジェクトと DataTable オブジェクトは MarshalByValueComponent から継承し、リモート処理用の ISerializable インターフェイスをサポートします。リモート処理できる ADO.NET オブジェクトはこれらのオブジェクトだけです。

bwy42y0e.alert_note(ja-jp,VS.90).gifメモ :

DataSet ではファイナライザが実行されないようになっているため、DataSet から継承したクラスは、ガベージ コレクタでファイナライズされません。派生クラスでは、そのコンストラクタで ReRegisterForFinalize メソッドを呼び出すことで、ガベージ コレクタでファイナライズが実行されるようにできます。


いくつかのメソッドを組み合わせて DataSet を作成した後で Northwind データベースのデータを読み込む例を次に示します。

Visual Basic
Option Explicit On
Option Strict On

Imports System.Data
Imports system.Data.SqlClient

Public Class NorthwindDataSet

    Public Shared Sub Main()
        Dim connectionString As String = _
            GetConnectionString()
        ConnectToData(connectionString)
    End Sub

    Private Shared Sub ConnectToData( _
        ByVal connectionString As String)

        ' Create a SqlConnection to the Northwind database.
        Using connection As SqlConnection = New SqlConnection( _
           connectionString)

            ' Create a SqlDataAdapter for the Suppliers table.
            Dim suppliersAdapter As SqlDataAdapter = _
               New SqlDataAdapter()

            ' A table mapping names the DataTable.
            suppliersAdapter.TableMappings.Add("Table", "Suppliers")

            ' Open the connection.
            connection.Open()
            Console.WriteLine("The SqlConnection is open.")

            ' Create a SqlCommand to retrieve Suppliers data.
            Dim suppliersCommand As SqlCommand = New SqlCommand( _
               "SELECT SupplierID, CompanyName FROM dbo.Suppliers;", _
               connection)
            suppliersCommand.CommandType = CommandType.Text

            ' Set the SqlDataAdapter's SelectCommand.
            suppliersAdapter.SelectCommand = suppliersCommand

            ' Fill the DataSet.
            Dim dataSet As DataSet = New DataSet("Suppliers")
            suppliersAdapter.Fill(dataSet)

            ' Create a second SqlDataAdapter and SqlCommand to get
            ' the Products table, a child table of Suppliers. 
            Dim productsAdapter As SqlDataAdapter = _
                New SqlDataAdapter()
            productsAdapter.TableMappings.Add("Table", "Products")

            Dim productsCommand As SqlCommand = New SqlCommand( _
               "SELECT ProductID, SupplierID FROM dbo.Products;", _
               connection)
            productsAdapter.SelectCommand = productsCommand

            ' Fill the DataSet.
            productsAdapter.Fill(dataSet)

            ' Close the connection.
            connection.Close()
            Console.WriteLine("The SqlConnection is closed.")

            ' Create a DataRelation to link the two tables
            ' based on the SupplierID.
            Dim parentColumn As DataColumn = _
               dataSet.Tables("Suppliers").Columns("SupplierID")
            Dim childColumn As DataColumn = _
               dataSet.Tables("Products").Columns("SupplierID")
            Dim relation As DataRelation = New _
               System.Data.DataRelation("SuppliersProducts", _
               parentColumn, childColumn)
            dataSet.Relations.Add(relation)

            Console.WriteLine( _
               "The {0} DataRelation has been created.", _
               relation.RelationName)
        End Using

    End Sub

    Private Shared Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,  
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);Initial Catalog=Northwind;" _
           & "Integrated Security=SSPI;"
    End Function
End Class
C#
using System;
using System.Data;
using System.Data.SqlClient;

namespace Microsoft.AdoNet.DataSetDemo
{
    class NorthwindDataSet
    {
        static void Main()
        {
            string connectionString = GetConnectionString();
            ConnectToData(connectionString);
        }

        private static void ConnectToData(string connectionString)
        {
            //Create a SqlConnection to the Northwind database.
            using (SqlConnection connection =
                       new SqlConnection(connectionString))
            {
                //Create a SqlDataAdapter for the Suppliers table.
                SqlDataAdapter adapter = new SqlDataAdapter();

                // A table mapping names the DataTable.
                adapter.TableMappings.Add("Table", "Suppliers");

                // Open the connection.
                connection.Open();
                Console.WriteLine("The SqlConnection is open.");

                // Create a SqlCommand to retrieve Suppliers data.
                SqlCommand command = new SqlCommand(
                    "SELECT SupplierID, CompanyName FROM dbo.Suppliers;",
                    connection);
                command.CommandType = CommandType.Text;

                // Set the SqlDataAdapter's SelectCommand.
                adapter.SelectCommand = command;

                // Fill the DataSet.
                DataSet dataSet = new DataSet("Suppliers");
                adapter.Fill(dataSet);

                // Create a second Adapter and Command to get
                // the Products table, a child table of Suppliers. 
                SqlDataAdapter productsAdapter = new SqlDataAdapter();
                productsAdapter.TableMappings.Add("Table", "Products");

                SqlCommand productsCommand = new SqlCommand(
                    "SELECT ProductID, SupplierID FROM dbo.Products;",
                    connection);
                productsAdapter.SelectCommand = productsCommand;

                // Fill the DataSet.
                productsAdapter.Fill(dataSet);

                // Close the connection.
                connection.Close();
                Console.WriteLine("The SqlConnection is closed.");

                // Create a DataRelation to link the two tables
                // based on the SupplierID.
                DataColumn parentColumn =
                    dataSet.Tables["Suppliers"].Columns["SupplierID"];
                DataColumn childColumn =
                    dataSet.Tables["Products"].Columns["SupplierID"];
                DataRelation relation =
                    new System.Data.DataRelation("SuppliersProducts",
                    parentColumn, childColumn);
                dataSet.Relations.Add(relation);
                Console.WriteLine(
                    "The {0} DataRelation has been created.",
                    relation.RelationName);
            }
        }

        static private string GetConnectionString()
        {
            // To avoid storing the connection string in your code, 
            // you can retrieve it from a configuration file.
            return "Data Source=(local);Initial Catalog=Northwind;"
                + "Integrated Security=SSPI";
        }
    }
}
継承階層

System..::.Object
  System.ComponentModel..::.MarshalByValueComponent
    System.Data..::.DataSet
スレッド セーフ

この型は、マルチスレッド読み取り操作に対して安全です。すべての書き込み操作の同期をとる必要があります。

プラットフォーム

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
バージョン情報

.NET Framework

サポート対象 : 3.5、3.0、2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 3.5、2.0、1.0

XNA Framework

サポート対象 : 1.0
参照

参照

その他の技術情報

タグ :


Page view tracker