次の方法で共有


DataTable のスキーマの定義

テーブルのスキーマ (構造) は、列と制約で表されます。DataTable のスキーマは、DataColumnForeignKeyConstraintUniqueConstraint の各オブジェクトを使用して定義します。テーブル内の列は、データ ソースの列に割り当てたり、式で算出された値を格納したり、格納されている値を自動的にインクリメントしたり、主キー値を格納したりできます。

大文字と小文字の区別

テーブル内の列、リレーションシップ、および制約を名前によって参照する場合は、大文字と小文字が区別されます。複数の列、リレーションシップ、または制約の名前が同じであっても、大文字と小文字が異なっていれば、1 つのテーブル内で同時に使用できます。たとえば、Col1col1 を同時に使用できます。この場合、1 つの列を名前により参照するときは、列名の大文字と小文字を正確に指定する必要があります。正確に指定しない場合は、例外がスローされます。たとえば、テーブル myTable に列 Col1 と列 col1 がある場合、Col1 は名前 myTable.Columns["Col1"] で参照され、col1 は名前 myTable.Columns["col1"] で参照されます。いずれかの列を myTable.Columns["COL1"] という名前で参照しようとすると、例外が生成されます。

大文字と小文字の区別の規則は、特定の名前の列、リレーションシップ、または制約が 1 つしかない場合には適用されません。つまり、特定の列、リレーションシップ、または制約オブジェクト名前と、大文字と小文字の違いも含めて一致する名前の列、リレーションシップ、または制約オブジェクトがテーブル内にない場合は、大文字と小文字を区別せずにそのオブジェクトを名前で参照でき、例外はスローされません。たとえば、テーブルに Col1 が 1 つしかない場合は、my.Columns["COL1"] を使用してこの列を参照できます。

DataTableCaseSensitive プロパティは、この動作には影響しません。CaseSensitive プロパティは、テーブル内のデータに適用され、並べ替え、検索、フィルタ処理、制約の強制適用などに影響を及ぼします。テーブル内の列、リレーションシップ、および制約の参照には、CaseSensitive プロパティは影響しません。

このセクションの内容

  • テーブルへの列の追加
    DataColumn オブジェクトを使用して、テーブルの列を定義する方法について説明します。
  • 式列の作成
    列の Expression プロパティを使用して、同じ行にある他の列の値を基に値を計算する方法について説明します。
  • AutoIncrement 列の作成
    数値を自動的にインクリメントして行ごとに一意の列値が割り当てられるように列を設定する方法について説明します。
  • テーブルの主キーの定義
    1 つ以上の DataColumn オブジェクトからテーブルの主キーを指定する方法について説明します。
  • テーブルへの制約の追加
    テーブル内の列の外部キー制約と UNIQUE 制約を定義する方法について説明します。