DataTable에 열 추가Adding Columns to a DataTable

DataTable 는 테이블의 Columns 속성에서 참조 하는 개체의 DataColumn 컬렉션이 포함 되어 있습니다.A DataTable contains a collection of DataColumn objects referenced by the Columns property of the table. 이 열 컬렉션과 모든 제약 조건을 함께 사용하여 테이블의 스키마나 구조를 정의합니다.This collection of columns, along with any constraints, defines the schema, or structure, of the table.

Datacolumn 생성자를 사용 하거나 테이블 DataColumnCollectionColumns 속성 ()의 Add 메서드를 호출 하 여 테이블 내에서 datacolumn 개체를 만들 수 있습니다.You create DataColumn objects within a table by using the DataColumn constructor, or by calling the Add method of the Columns property of the table, which is a DataColumnCollection. Add 메서드는 선택적 ColumnName, DataTypeExpression 인수를 받아들이고 컬렉션의 멤버로 새 DataColumn 을 만듭니다.The Add method accepts optional ColumnName, DataType, and Expression arguments and creates a new DataColumn as a member of the collection. 또한 기존 datacolumn 개체를 수락 하 여 컬렉션에 추가 하 고 요청 시 추가 된 datacolumn 에 대 한 참조를 반환 합니다.It also accepts an existing DataColumn object and adds it to the collection, and returns a reference to the added DataColumn if requested. DataTable 개체는 데이터 원본에 한정 되지 않으므로 DataColumn의 데이터 형식을 지정할 때 .NET Framework 형식이 사용 됩니다.Because DataTable objects are not specific to any data source, .NET Framework types are used when specifying the data type of a DataColumn.

다음 예에서는 DataTable에 4 개의 열을 추가 합니다.The following example adds four columns to a 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 값을 허용 하지 않도록 설정 되 고 값을 고유 하 게 제한 하는 것을 확인 합니다.In the example, notice that the properties for the CustID column are set to not allow DBNull values and to constrain values to be unique. 그러나 CustID 열을 테이블의 기본 키 열로 정의 하면 allowdbnull 속성은 자동으로 False 로 설정 되 고 Unique 속성은 자동으로 true로 설정 됩니다.However, if you define the CustID column as the primary key column of the table, the AllowDBNull property will automatically be set to false and the Unique property will automatically be set to true. 자세한 내용은 기본 키 정의합니다.For more information, see Defining Primary Keys.

주의

열에 대해 열 이름을 지정 하지 않으면 열에 "Column1"으로 시작 하는 열N 의 증분 기본 이름이 지정 됩니다 .이 이름은 DataColumnCollection에 추가 됩니다.If a column name is not supplied for a column, the column is given an incremental default name of ColumnN, starting with "Column1", when it is added to the DataColumnCollection. 열 이름을 제공 하는 경우 "열N"의 명명 규칙을 사용 하지 않는 것이 좋습니다 .이 경우 사용자가 제공 하는 이름이 DataColumnCollection의 기존 기본 열 이름과 충돌할 수 있습니다.We recommend that you avoid the naming convention of "ColumnN" when you supply a column name, because the name you supply may conflict with an existing default column name in the DataColumnCollection. 이미 있는 이름을 입력하면 예외가 throw됩니다.If the supplied name already exists, an exception is thrown.

XElementDataType에서 DataColumnDataTable로 사용하는 경우 데이터를 읽을 때 XML serialization이 작동하지 않습니다.If you are using XElement as the DataType of a DataColumn in the DataTable, XML serialization will not work when you read in data. 예를 들어 XmlDocument 메서드를 사용하여 DataTable.WriteXml를 작성하는 경우 XML에 대한 serialization 수행 시 XElement에 추가 부모 노드가 있습니다.For example, if you write out a XmlDocument by using the DataTable.WriteXml method, upon serialization to XML there is an additional parent node in the XElement. 이 문제를 해결하려면 SqlXml 대신 XElement 형식을 사용합니다.To work around this problem, use the SqlXml type instead of XElement. ReadXmlWriteXmlSqlXml와 올바르게 작동합니다.ReadXml and WriteXml work correctly with SqlXml.

참고자료See also