DataColumn.DataType 속성

정의

열에 저장된 데이터 형식을 가져오거나 설정합니다.

public:
 property Type ^ DataType { Type ^ get(); void set(Type ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
public Type DataType { get; set; }
public Type DataType { get; set; }
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
[System.Data.DataSysDescription("DataColumnDataTypeDescr")]
public Type DataType { get; set; }
[<System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))>]
member this.DataType : Type with get, set
member this.DataType : Type with get, set
[<System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))>]
[<System.Data.DataSysDescription("DataColumnDataTypeDescr")>]
member this.DataType : Type with get, set
Public Property DataType As Type

속성 값

열 데이터 형식을 나타내는 Type 개체입니다.

특성

예외

열에 저장된 데이터가 이미 있는 경우

예제

다음 예제에서는 여러 데이터 형식의 열을 에 추가한 DataTable다음 테이블에 한 행을 추가합니다.

public DataTable MakeDataTable(){

    DataTable myTable;
    DataRow myNewRow;
    // Create a new DataTable.
    myTable = new DataTable("My Table");

    // Create DataColumn objects of data types.
    DataColumn colString = new DataColumn("StringCol");
    colString.DataType = System.Type.GetType("System.String");
    myTable.Columns.Add(colString);

    DataColumn colInt32 = new DataColumn("Int32Col");
    colInt32.DataType = System.Type.GetType("System.Int32");
    myTable.Columns.Add(colInt32);

    DataColumn colBoolean = new DataColumn("BooleanCol");
    colBoolean.DataType = System.Type.GetType("System.Boolean");
    myTable.Columns.Add(colBoolean);

    DataColumn colTimeSpan = new DataColumn("TimeSpanCol");
    colTimeSpan.DataType = System.Type.GetType("System.TimeSpan");
    myTable.Columns.Add(colTimeSpan);

    DataColumn colDateTime = new DataColumn("DateTimeCol");
    colDateTime.DataType = System.Type.GetType("System.DateTime");
    myTable.Columns.Add(colDateTime);

    DataColumn colDecimal = new DataColumn("DecimalCol");
    colDecimal.DataType = System.Type.GetType("System.Decimal");
    myTable.Columns.Add(colDecimal);

    DataColumn colByteArray = new DataColumn("ByteArrayCol");
    colByteArray.DataType = System.Type.GetType("System.Byte[]");
    myTable.Columns.Add(colByteArray);

    // Populate one row with values.
    myNewRow = myTable.NewRow();

    myNewRow["StringCol"] = "Item Name";
    myNewRow["Int32Col"] = 2147483647;
    myNewRow["BooleanCol"] = true;
    myNewRow["TimeSpanCol"] = new TimeSpan(10,22,10,15,100);
    myNewRow["DateTimeCol"] = System.DateTime.Today;
    myNewRow["DecimalCol"] = 64.0021;
    myNewRow["ByteArrayCol"] = new Byte[] { 1, 5, 120 };
    myTable.Rows.Add(myNewRow);
    return myTable;
 }
Public Function MakeDataTable() As DataTable
    
    Dim myTable As DataTable 
    Dim myNewRow As DataRow 
    ' Create a new DataTable.
    myTable = New DataTable("My Table")
 
    ' Create DataColumn objects of data types.
    Dim colString As New DataColumn("StringCol")
    colString.DataType = System.Type.GetType("System.String")
    myTable.Columns.Add(colString) 
 
    Dim colInt32 As New DataColumn("Int32Col")
    colInt32.DataType = System.Type.GetType("System.Int32")
    myTable.Columns.Add(colInt32)
 
    Dim colBoolean As New DataColumn("BooleanCol")
    colBoolean.DataType = System.Type.GetType("System.Boolean")
    myTable.Columns.Add(colBoolean)
 
    Dim colTimeSpan As New DataColumn("TimeSpanCol")
    colTimeSpan.DataType = System.Type.GetType("System.TimeSpan")
    myTable.Columns.Add(colTimeSpan)
 
    Dim colDateTime As New DataColumn("DateTimeCol")
    colDateTime.DataType = System.Type.GetType("System.DateTime")
    myTable.Columns.Add(colDateTime)
 
    Dim colDecimal As New DataColumn("DecimalCol")
    colDecimal.DataType = System.Type.GetType("System.Decimal")
    myTable.Columns.Add(colDecimal)
 
    ' Populate one row with values.
    myNewRow = myTable.NewRow()
 
    myNewRow("StringCol") = "Item Name"
    myNewRow("Int32Col") = 2147483647
    myNewRow("BooleanCol") = True
    myNewRow("TimeSpanCol") = New TimeSpan(10,22,10,15,100)
    myNewRow("DateTimeCol") = System.DateTime.Today
    myNewRow("DecimalCol") = 64.0021
    myNewRow("ByteArrayCol") = New [Byte]() {1, 5, 120}
    myTable.Rows.Add(myNewRow)
    MakeDataTable = myTable  
 End Function

설명

DataType 값을 설정하는 것은 데이터 원본에서 데이터를 올바르게 만들고 업데이트하도록 보장하는 데 매우 중요합니다.

속성은 DataType 다음과 같은 기본 .NET Framework 데이터 형식을 지원합니다.

다음과 같은 배열 형식을 사용할 수 있습니다.

  • Byte[]

열이 데이터를 저장하기 시작한 후 이 속성을 변경할 때 예외가 생성됩니다.

AutoIncrement 속성을 설정 DataType 하기 전에 이 로 true 설정되고 정수 형식을 제외한 모든 항목으로 형식을 설정하려고 하면 예외가 생성됩니다.

참고

데이터 형식 Byte[] 의 열은 기본 .NET Framework 데이터 형식과 달리 참조 데이터 형식이므로 특정 경우에 특별한 처리가 필요합니다. 데이터 형식 Byte[] 의 열이 의 또는 키로 PrimaryKeySortRowFilter 사용되는 경우 열 값에 대한 DataView변경 내용에는 열 값을 별도로 인스턴스화된 Byte[] 개체에 할당 Byte[] 해야 합니다. 이 할당은 정렬, 필터링 및 기본 키 작업에서 사용하는 내부 인덱스의 업데이트를 트리거하는 데 필요합니다. 이는 다음 예에 의해 설명됩니다.

byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;

참고

열을 기본 .NET Framework 데이터 형식 이외의 데이터 형식으로 정의할 수 있지만 Byte[]이러한 열은 다음과 같은 사용 제한에 따라 사용자 정의 형식으로 처리됩니다. (사용자 정의 형식에 대한 자세한 내용은 User-Defined 형식 만들기 및 사용을 참조하세요.)

  • 열은 또는 Select 식의 RowFilter 일부가 될 수 없습니다.

  • 열이 또는 에 대해 DataView또는 로 Sort 사용되는 PrimaryKey경우 변경할 수 없는 필드로 처리되어야 합니다. 열 데이터가 테이블에 추가된 후에는 변경되지 않아야 합니다.

  • 해당 은 ColumnMapping 로만 설정할 MappingType.Element수 있습니다.

  • 열의 데이터 형식을 구현하는 클래스는 로 SerializableAttribute표시되어야 하며 필요한 경우 또는 IXmlSerializable 인터페이스를 ISerializable 구현해야 합니다.

  • 변경 내용 추적에 대한 지원은 제한됩니다. 클래스의 변경 내용 추적 메커니즘을 활용 DataTable 하려면 열의 데이터 형식을 구현하는 클래스가 인터페이스를 구현 IChangeTracking 하거나 행에서 를 호출 SetModified 하거나 열 값 개체를 별도로 인스턴스화된 열 값 개체에 할당하여 열 값이 수정된 시기를 알리는 DataRow 책임을 맡아야 합니다.

적용 대상

추가 정보