DataSet への DataTable の追加

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

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

DataSet customerOrders = new("CustomerOrders");

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

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

ordersTable.PrimaryKey = new DataColumn[] { pkOrderID };
Dim customerOrders As 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 に存在する 2 つ以上のテーブルまたはリレーションが同じ名前を持つことができます。 この場合、名前を使用してテーブルとリレーションを参照する際に大文字と小文字が区別されます。 たとえば、DataSetdataSet にテーブル Table1table1 が含まれる場合、Table1 を参照するには dataSet.Tables["Table1"]table1 を参照するには dataSet.Tables ["table1"] と名前を指定します。 このいずれかのテーブルの参照に dataSet.Tables["TABLE1"] と指定すると、例外が発生します。

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

Note

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

名前空間のサポート

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

関連項目