Share via


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

DataTable には、テーブルの Columns プロパティによって参照される DataColumn オブジェクトのコレクションが格納されます。この列のコレクションと制約によって、テーブルのスキーマ (構造) が定義されます。

テーブル内で DataColumn オブジェクトを作成するには、DataColumn コンストラクターを使用するか、または DataColumnCollection の 1 つである、テーブルの Columns プロパティの Add メソッドを呼び出します。Add メソッドは、オプションの ColumnNameDataTypeExpression の各引数を受け取り、新しい DataColumn をコレクションのメンバーとして作成します。また、このメソッドは既存の DataColumn オブジェクトを受け取り、このオブジェクトをコレクションに追加します。必要な場合には、追加された DataColumn への参照を返します。DataTable オブジェクトはデータ ソースに依存しないため、DataColumn のデータ型を指定するときには、.NET Framework 型が使用されます。

DataTable に 4 つの列を追加する例を次に示します。

Dim workTable As DataTable = New DataTable("Customers")

Dim workCol As DataColumn = workTable.Columns.Add( _
    "CustID", Type.GetType("System.Int32"))
workCol.AllowDBNull = false
workCol.Unique = true

workTable.Columns.Add("CustLName", Type.GetType("System.String"))
workTable.Columns.Add("CustFName", Type.GetType("System.String"))
workTable.Columns.Add("Purchases", Type.GetType("System.Double"))
DataTable workTable = new DataTable("Customers");

DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32));
workCol.AllowDBNull = false;
workCol.Unique = true;

workTable.Columns.Add("CustLName", typeof(String));
workTable.Columns.Add("CustFName", typeof(String));
workTable.Columns.Add("Purchases", typeof(Double));

この例では、DBNull 値を許可せずに値を一意の値に制約するように、CustID 列のプロパティが設定されています。ただし、CustID 列をテーブルの主キー列として定義した場合、AllowDBNull プロパティは自動的に false に設定され、Unique プロパティは自動的に true に設定されます。詳細については、「主キーの定義 (ADO.NET)」を参照してください。

Caution メモ注意

列名が指定されていない列を DataColumnCollection に追加する場合、この列には "Column1" から始まるインクリメンタル既定名 ColumnN が割り当てられます。列名を指定するときには、"ColumnN" の命名規則を使用しないことをお勧めします。これは、指定した名前が DataColumnCollection に既に存在する既定の列名と競合しないようにするためです。指定した名前が既に存在する場合は、例外がスローされます。

XElement を、DataTable 内の DataColumnDataType として使用すると、データを読み取るときに XML シリアル化が機能しません。たとえば、DataTable.WriteXml メソッドを使用して XmlDocument を書き込むと、XML へのシリアル化で XElement に親ノードが追加されます。この問題に対処するには、XElement の代わりに SqlXml 型を使用します。ReadXml および WriteXml は、SqlXml で適切に機能します。

参照

参照

DataColumn

DataColumnCollection

DataTable

その他の技術情報

DataTable スキーマの定義 (ADO.NET)

DataTable (ADO.NET)