다음을 통해 공유


DataColumn.DataType 속성

정의

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

public:
 property Type ^ DataType { Type ^ get(); void set(Type ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public Type DataType { get; set; }
[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))>]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
member this.DataType : Type with 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 하기 true 전에 설정된 경우 DataType 정수 형식을 제외한 모든 항목으로 형식을 설정하려고 하면 예외가 생성됩니다.

메모

데이터 형식 Byte[] 열은 기본 .NET Framework 데이터 형식과 달리 참조 데이터 형식이므로 특정 경우에 특별한 처리가 필요합니다. 데이터 형식 Byte[] 의 열이 열에 대해 PrimaryKey또는 키로 SortRowFilterDataView 사용되는 경우 열 값이 변경되면 열 값을 별도로 인스턴스화된 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[] 이외의 데이터 형식으로 열을 정의할 수 있지만 이러한 열은 다음과 같은 사용 제한에 따라 사용자 정의 형식으로 처리됩니다.

  • 열은 식의 RowFilterSelect 일부가 될 수 없습니다.

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

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

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

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

적용 대상

추가 정보