DataSet クラス
アセンブリ: System.Data (system.data.dll 内)

<SerializableAttribute> _ Public Class DataSet Inherits MarshalByValueComponent Implements IListSource, IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, _ ISerializable
[SerializableAttribute] public class DataSet : MarshalByValueComponent, IListSource, IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable
[SerializableAttribute] public ref class DataSet : public MarshalByValueComponent, IListSource, IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable

データ ソースから取得されたデータのメモリ内キャッシュである DataSet は、ADO.NET アーキテクチャの主要コンポーネントです。DataSet は、DataRelation オブジェクトと相互に関連付けることができる DataTable オブジェクトのコレクションで構成されます。UniqueConstraint オブジェクトと ForeignKeyConstraint オブジェクトを使用して、DataSet 内でデータの整合性を適用することもできます。DataSet オブジェクトの使用の詳細については、「ADO.NET での DataSet の使用」を参照してください。
DataTable オブジェクトにはデータを格納できるのに対して、DataRelationCollection を使用するとテーブルの階層構造内を移動できます。テーブルは、Tables プロパティを使用してアクセスできる DataTableCollection に格納されます。DataTable オブジェクトにアクセスするときは、条件付きで大文字と小文字が区別されることに注意してください。たとえば、"mydatatable" という名前の DataTable と "Mydatatable" という名前のテーブルがある場合は、この 2 つのーブルのどちらかを検索する文字列は大文字と小文字を区別すると見なされます。ただし、"mydatatable" という名前は存在するが "Mydatatable" という名前が存在しない場合は、検索文字列は大文字と小文字を区別しないと見なされます。DataTable オブジェクトの使用の詳細については、「DataTable の作成」を参照してください。
DataSet では、データとスキーマを XML ドキュメントとして読み取ったり、書き込んだりできます。読み込んだデータとスキーマは、HTTP で転送でき、XML 対応のすべてのプラットフォームおよびアプリケーションで使用できます。スキーマを XML スキーマとして保存するには WriteXmlSchema メソッドを使用します。スキーマとデータの両方を保存するには WriteXml メソッドを使用します。スキーマとデータの両方を含む XML ドキュメントを読み取るには、ReadXml メソッドを使用します。
通常の多階層の実装で DataSet を作成および更新し、次に元のデータを更新するステップを次に示します。
-
DataAdapter を使用して、DataSet 内に DataTable を作成し、各テーブルにデータ ソースのデータを格納します。
-
DataRow オブジェクトを追加、更新、または削除して、個別の DataTable オブジェクト内のデータを変更します。
-
この 2 つ目の DataSet を引数として渡して、DataAdapter の Update メソッドを呼び出します。
-
DataSet で AcceptChanges を呼び出します。変更をキャンセルするには、RejectChanges を呼び出します。
![]() |
---|
DataSet オブジェクトと DataTable オブジェクトは MarshalByValueComponent から継承し、リモート処理用の ISerializable インターフェイスをサポートします。リモート処理できる ADO.NET オブジェクトはこれらのオブジェクトだけです。 |

いくつかのメソッドを組み合わせて DataSet を作成した後で Northwind データベースのデータを読み込む例を次に示します。
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
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.ComponentModel.MarshalByValueComponent
System.Data.DataSet


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- DataSet クラスのページへのリンク