XML スキーマ定義言語 (XSD) 標準に準拠する XML スキーマを設定すると、.NET Framework SDK と共に用意される XSD.exe ツールを使用して、厳密に型指定された DataSet を生成できます。
XSD.exe ツールを使用して DataSet を生成する構文を次のコード例で示します。
xsd.exe /d /l:CS XSDSchemaFileName.xsd /n:XSDSchema.Namespace
この構文では、/d
ディレクティブが DataSet を生成することを知らせます。また、/l:
は使用する言語 (C#、Visual Basic .NET など) をツールに知らせます。オプションの /n:
ディレクティブは、XSDSchema.Namespace と呼ばれる DataSet の名前空間も生成することをツールに知らせます。コマンドの出力は XSDSchemaFileName.cs で、ADO.NET アプリケーションでコンパイルおよび使用できます。生成されたコードをライブラリまたはモジュールとしてコンパイルできます。
C# コンパイラ (csc.exe) を使用して、生成されたコードをライブラリとしてコンパイルする構文を次のコード例で示します。
csc.exe /t:library XSDSchemaFileName.cs /r:System.dll /r:System.Data.dll
/t:
ディレクティブはライブラリとしてコンパイルすることをツールに知らせ、/r:
ディレクティブはコンパイルに必要な依存ライブラリを指定します。コマンドの出力は XSDSchemaFileName.dll で、/r:
ディレクティブによる ADO.NET アプリケーションのコンパイル時にコンパイラに渡すことができます。
ADO.NET アプリケーションの XSD.exe に渡された名前空間にアクセスする構文を次のコード例で示します。
Imports XSDSchema.Namespace
[C#]
using XSDSchema.Namespace;
CustomerDataSet という名前の型指定された DataSet を使用して、Northwind データベースから顧客リストを読み込むコード例を次に示します。Fill メソッドを使用してデータが読み込まれると、コード例では、型指定された CustomersRow (DataRow) オブジェクトを使用して、Customers テーブルの各顧客をループします。これにより、DataColumnCollection を使用せずに CustomerID 列に直接アクセスできます。
Dim custDS As CustomerDataSet= New CustomerDataSet()
Dim custCMD As SqlDataAdapter New SqlDataAdapter("SELECT * FROM Customers", _
"Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")
custCMD.Fill(custDS, "Customers")
Dim custRow As CustomerDataSet.CustomersRow
For Each custRow In custDS.Customers
Console.WriteLine(custRow.CustomerID)
Next
[C#]
CustomerDataSet custDS = new CustomerDataSet();
SqlDataAdapter custCMD = new SqlDataAdapter("SELECT * FROM Customers",
"Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");
custCMD.Fill(custDS, "Customers");
foreach(CustomerDataSet.CustomersRow custRow in custDS.Customers)
Console.WriteLine(custRow.CustomerID);
コード例に使用された XML スキーマを次に示します。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="CustomerDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="CustomerDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element name="CustomerID" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
参照
型指定された DataSet の使用 | DataSet の作成および使用 | DataColumnCollection クラス | DataSet クラス