DataSet への DataTable の追加 (ADO.NET)

ADO.NET を使用して DataTable オブジェクトを作成し、そのオブジェクトを既存の DataSet に追加できます。 PrimaryKey プロパティと Unique プロパティを使用することで、DataTable の制約情報を設定できます。

DataSet を構築し、DataSet に新しい DataTable オブジェクトを追加してから、3 つの DataColumn オブジェクトをそのテーブルに追加する例を次に示します。 コードの最後では、1 つの列が主キーの列として設定されています。

Dim customerOrders As DataSet = New DataSet("CustomerOrders")

Dim ordersTable As DataTable = customerOrders.Tables.Add("Orders")

Dim pkOrderID As DataColumn = ordersTable.Columns.Add( _
    "OrderID", Type.GetType("System.Int32"))
ordersTable.Columns.Add("OrderQuantity", Type.GetType("System.Int32"))
ordersTable.Columns.Add("CompanyName", Type.GetType("System.String"))

ordersTable.PrimaryKey = New DataColumn() {pkOrderID}
DataSet customerOrders = new DataSet("CustomerOrders");

DataTable ordersTable = customerOrders.Tables.Add("Orders");

DataColumn pkOrderID = 
    ordersTable.Columns.Add("OrderID", typeof(Int32));
ordersTable.Columns.Add("OrderQuantity", typeof(Int32));
ordersTable.Columns.Add("CompanyName", typeof(string));

ordersTable.PrimaryKey = new DataColumn[] { pkOrderID };

大文字と小文字の区別

大文字と小文字の区別が異なれば、DataSet に存在する 2 つ以上のテーブルまたはリレーションが同じ名前を持つことができます。 この場合、名前を使用してテーブルとリレーションを参照する際に大文字と小文字が区別されます。 たとえば、DataSet dataSetTable1table1 のテーブルがある場合、Table1 を参照するには dataSet.Tables["Table1"]table1 を参照するには dataSet.Tables ["table1"] と名前を指定します。 このいずれかのテーブルの参照に dataSet.Tables ["TABLE1"] と指定すると、例外が発生します。

特定の名前を持つテーブルまたはリレーションが 1 つのみの場合、大文字と小文字は区別されません。 たとえば、DataSetTable1 しか存在しない場合は、dataSet.Tables["TABLE1"] を使用してそのテーブルを参照できます。

メモメモ

この動作は DataSetCaseSensitive プロパティの影響を受けません。CaseSensitive プロパティは、DataSet 内のデータに適用され、並べ替え、検索、フィルター処理、制約の適用などに影響を及ぼします。

名前空間のサポート

2.0 より前のバージョンの ADO.NET では、異なる名前空間に存在しているテーブルであっても、2 つのテーブルが同じ名前を持つことはできませんでした。 ADO.NET 2.0 には、この制限はありません。 したがって、DataSet に、Namespace プロパティ値が異なり、TableName プロパティ値が一致する 2 つのテーブルが存在しても問題ありません。

参照

その他の技術情報

DataSets、DataTables、および DataViews (ADO.NET)