A DataTable 는 테이블의 DataColumnColumns 속성에서 참조하는 개체의 컬렉션을 포함합니다. 이 열 컬렉션은 제약 조건과 함께 테이블의 스키마 또는 구조를 정의합니다.
DataColumn 생성자를 사용하거나 테이블의 Columns 속성인 Add 메서드를 호출하여 테이블 내에 DataColumn 개체를 DataColumnCollection만듭니다. Add 메서드는 선택적 ColumnName, DataType 및 Expression 인수를 허용하고 컬렉션의 멤버로 새 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));
이 예제에서는 CustID 열의 속성이 DBNull 값을 허용하지 않고 값이 고유하도록 제한되도록 설정됩니다. 그러나 CustID 열을 테이블의 기본 키 열로 정의하는 경우 AllowDBNull 속성은 자동으로 false 로 설정되고 Unique 속성은 자동으로 true로 설정됩니다. 자세한 내용은 기본 키 정의합니다.
주의
열에 열 이름을 지정하지 않으면 열이 DataColumnCollection에 추가될 때 "Column1"부터 열N의 증분 기본 이름이 지정됩니다. 제공하는 이름이 DataColumnCollection의 기존 기본 열 이름과 충돌할 수 있으므로 열 이름을 제공할 때는 "열N"의 명명 규칙을 사용하지 않는 것이 좋습니다. 제공된 이름이 이미 있는 경우 예외가 발생합니다.
XElement에서 DataType의 DataColumn로 DataTable를 사용하는 경우 데이터를 읽을 때 XML serialization이 작동하지 않습니다. 예를 들어 XmlDocument 메서드를 사용하여 DataTable.WriteXml
를 작성하면, 이를 XML로 직렬화할 때 XElement에 추가 부모 노드가 생깁니다. 이 문제를 해결하려면 SqlXml 대신 XElement 유형을 사용하세요.
ReadXml
와 WriteXml
는 SqlXml와 함께 올바르게 작동합니다.