DataTable에 열 추가

DataTable에는 테이블의 Columns 속성에서 참조하는 DataColumn 개체의 컬렉션이 포함되어 있습니다. 이 열 컬렉션과 모든 제약 조건을 함께 사용하여 테이블의 스키마나 구조를 정의합니다.

DataColumn 생성자를 사용하거나 테이블의 Columns 속성, 즉 DataColumnCollectionAdd 메서드를 호출하여 테이블 안에 DataColumn 개체를 만듭니다. Add 메서드에서는 선택적인 ColumnName, DataTypeExpression 인수를 승인하며, 컬렉션의 멤버로서 새 DataColumn을 만듭니다. 이 메서드에서는 또한 기존의 DataColumn 개체를 승인하여 컬렉션에 추가하며, 필요한 경우 추가된 DataColumn의 참조를 반환합니다. DataTable 개체는 특정 데이터 원본으로 한정되지 않습니다. 따라서DataColumn의 데이터 형식을 지정할 때는 .NET Framework 형식이 사용됩니다.

다음 예에서는 DataTable에 네 개의 열을 추가합니다.

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));  

이 예에서는 CustID 열의 속성이 DBNull 값을 허용하지 않고 이 값을 고유 값으로 제약하도록 설정되어 있습니다. 그러나 CustID 열을 테이블의 기본 키 열로 정의하는 경우, AllowDBNull 속성은 false로 자동 설정되고 Unique 속성은 true로 자동 설정됩니다. 자세한 내용은 기본 키 정의를 참조하세요.

주의

열에 이름이 입력되지 않은 경우 해당 열을 DataColumnCollection에 추가하면 열 이름이 "Column1"로 시작하는 ColumnN인 증분 기본 이름으로 지정됩니다. 열 이름을 입력하는 경우에는 "ColumnN" 명명 규칙을 사용하지 않는 것이 좋습니다. 이 경우 DataColumnCollection에 있는 기존의 기본 열 이름과 충돌이 발생할 수 있습니다. 이미 있는 이름을 입력하면 예외가 throw됩니다.

XElementDataType에서 DataColumnDataTable로 사용하는 경우 데이터를 읽을 때 XML serialization이 작동하지 않습니다. 예를 들어 XmlDocument 메서드를 사용하여 DataTable.WriteXml를 작성하는 경우 XML에 대한 serialization 수행 시 XElement에 추가 부모 노드가 있습니다. 이 문제를 해결하려면 SqlXml 대신 XElement 형식을 사용합니다. ReadXmlWriteXmlSqlXml와 올바르게 작동합니다.

참고 항목