DataSet への DataTable の追加
ADO.NET を使用して DataTable オブジェクトを作成し、そのオブジェクトを既存の DataSet に追加できます。DataColumn オブジェクトの PrimaryKey プロパティと Unique プロパティを使用することで、DataTable の制約情報を設定できます。DataColumn オブジェクトは、DataTable の Columns コレクションに追加されます。
DataSet を構築し、DataSet に新しい DataTable オブジェクトを追加してから、3 つの DataColumn オブジェクトをそのテーブルに追加する例を次に示します。最後に、コードによって 1 つの列が主キーの列として設定されます。
Dim custDS As DataSet = New DataSet("CustomerOrders")
Dim ordersTable As DataTable = custDS.Tables.Add("Orders")
Dim pkCol 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() {pkCol}
[C#]
DataSet custDS = new DataSet("CustomerOrders");
DataTable ordersTable = custDS.Tables.Add("Orders");
DataColumn pkCol = ordersTable.Columns.Add("OrderID", typeof(Int32));
ordersTable.Columns.Add("OrderQuantity", typeof(Int32));
ordersTable.Columns.Add("CompanyName", typeof(string));
ordersTable.PrimaryKey = new DataColumn[] {pkCol};
大文字と小文字の区別
DataSet で名前を使用してテーブルとリレーションシップを参照する場合、大文字と小文字が区別されます。DataSet にある 2 つ以上のテーブルまたはリレーションシップを同じ名前にすることができますが、大文字と小文字を区別する必要があります。たとえば、名前は Table1 と table1 にすることができます。この場合、名前を使用してテーブルのいずれか 1 つを参照するには、テーブル名の大文字と小文字を正確に一致させる必要があります。それ以外の場合には、例外がスローされます。たとえば、DataSet myDS に Table1 と table1 のテーブルがある場合、Table1 を参照するには myDS.Tables["Table1"]、table1 を参照するには myDS.Tables ["table1"] と名前を指定します。そのいずれかのテーブルの参照に myDS.Tables ["TABLE1"] と指定すると、例外が発生します。
特定の名前のテーブルまたはリレーションシップが 1 つだけ存在する場合、大文字と小文字の区別の規則は適用されません。つまり、大文字と小文字を区別しても、DataSet のテーブルまたはリレーションシップのオブジェクトがその特定のテーブル名またはリレーションシップのオブジェクト名と一致しない場合でも、任意の大文字と小文字を使用してそのオブジェクトを参照できるため、例外がスローされません。たとえば、DataSet に Table1 しかない場合は、myDS.Tables["TABLE1"] を使用してそのテーブルを参照できます。
したがって、この動作は DataSet の CaseSensitive プロパティの影響を受けません。CaseSensitive プロパティは、DataSet のデータに適用され、並べ替え、検索、フィルタ処理、制約の適用などに影響します。DataSet のテーブルまたはリレーションシップの参照は、CaseSensitive プロパティの影響を受けません。