DataColumn.DataType DataColumn.DataType DataColumn.DataType DataColumn.DataType Property

정의

열에 저장된 데이터 형식을 가져오거나 설정합니다.Gets or sets the type of data stored in the column.

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

속성 값

열 데이터 형식을 나타내는 Type 개체입니다.A Type object that represents the column data type.

예외

열에 저장된 데이터가 이미 있는 경우The column already has data stored.

예제

에 여러 데이터 형식의 열을 추가 하는 다음 예제는 DataTable, 다음 테이블에 하나의 행을 추가 합니다.The following example adds columns of several data types to a DataTable, and then adds one row to the table.

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 DataColumn = New DataColumn("StringCol")
    colString.DataType = System.Type.GetType("System.String")
    myTable.Columns.Add(colString) 
 
    Dim colInt32 As DataColumn = New DataColumn("Int32Col")
    colInt32.DataType = System.Type.GetType("System.Int32")
    myTable.Columns.Add(colInt32)
 
    Dim colBoolean As DataColumn = New DataColumn("BooleanCol")
    colBoolean.DataType = System.Type.GetType("System.Boolean")
    myTable.Columns.Add(colBoolean)
 
    Dim colTimeSpan As DataColumn = New DataColumn("TimeSpanCol")
    colTimeSpan.DataType = System.Type.GetType("System.TimeSpan")
    myTable.Columns.Add(colTimeSpan)
 
    Dim colDateTime As DataColumn = New DataColumn("DateTimeCol")
    colDateTime.DataType = System.Type.GetType("System.DateTime")
    myTable.Columns.Add(colDateTime)
 
    Dim colDecimal As DataColumn = 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 값이 올바른 생성을 보장 하 고 데이터 원본에서 데이터의 업데이트에 매우 중요 합니다.Setting the DataType value is very important to guaranteeing the correct creation and updating of data in a data source.

DataType 속성은 다음 기본.NET Framework 데이터 형식 지원:The DataType property supports the following base .NET Framework data types:

다음 배열 형식을:as well as the following array type:

  • Byte[]

데이터를 저장 하기 시작 된 열 뒤에이 속성을 변경 하는 경우 예외가 생성 됩니다.An exception is generated when changing this property after the column has begun storing data.

하는 경우 AutoIncrement 로 설정 된 true 설정 하기 전에 DataType 속성 설정 하려고 한 형식을 정수 형식 외에, 예외가 생성 됩니다.If AutoIncrement is set to true before setting the DataType property, and you try to set the type to anything except an integer type, an exception is generated.

참고

데이터 형식의 열 Byte[] 이므로, 기본.NET Framework 데이터 형식과 달리, 참조 데이터 형식의 특정 사례에서 특수 처리가 필요 합니다.A column of data type Byte[] requires special treatment in certain cases since, unlike the base .NET Framework data types, it is a reference data type. 데이터 형식의 열 Byte[] 로 사용 되는 PrimaryKey, 또는 Sort 또는 RowFilter 키를 DataView, 할당 열 값을 변경 해야는 Byte[] 열 값을 개별적으로 인스턴스화된 Byte[] 개체입니다.If a column of data type Byte[] is used as a PrimaryKey, or as a Sort or RowFilter key for a DataView, any change to the column value must involve assigning the Byte[] column value to a separately instantiated Byte[] object. 이 할당은 정렬, 필터링 및 기본 키 작업에 의해 사용 되는 내부 인덱스의 업데이트를 트리거하도록 해야 합니다.This assignment is required to trigger the update of the internal indexes used by sorting, filtering, and primary key operations. 다음 예제에서 이를 확인할 수 있습니다.This is illustrated by the following example:

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

참고

기본.NET Framework 데이터 형식 이외의 데이터 형식으로 열을 정의 하는 것이 가능 하지만 및 Byte[], 이러한 열을 다음 사용 제한에 따라 사용자 정의 형식으로 간주 됩니다.Although it is possible to define a column as data type other than the base .NET Framework data types and Byte[], such a column will be treated as a user-defined type, subject to the following usage restrictions. (사용자 정의 형식에 대 한 자세한 내용은 참조 하세요. 만들기 및 사용자 형식.)(For more information on user-defined types, see Creating and Using User-Defined Types.)

  • 열에 포함 될 수 없습니다는 RowFilter 또는 Select 식입니다.The column cannot be part of a RowFilter or Select expression.

  • 열 사용 되는 경우는 PrimaryKey, 또는 Sort 또는 DataView를 변경할 수 없는 필드로 간주 해야 합니다; 테이블에 추가 되 면 열 데이터를 변경 하지 않아야 합니다.If the column is used as a PrimaryKey, or as a Sort or for a DataView, it must be treated as an immutable field; the column data must not be changed once it has been added to the table.

  • 해당 ColumnMapping 로 설정할 수 있습니다 MappingType.Element합니다.Its ColumnMapping can be only set to MappingType.Element.

  • 열의 데이터 형식이 여야 구현으로 표시 되어야 하는 클래스를 SerializableAttribute, 필요한 구현 하는 경우는 ISerializable 또는 IXmlSerializable 인터페이스입니다.The class that implements the column's data type must be must be marked with the SerializableAttribute, and if necessary implement the ISerializable or IXmlSerializable interface.

  • 변경 내용 추적에 대 한 지원은 제한 됩니다.Support for change tracking is limited. 활용 하는 DataTable 클래스의 변경 내용 추적 메커니즘을 열의 데이터 형식을 구현 하는 클래스를 구현 합니다 IChangeTracking 인터페이스 또는 알리는 대 한 작업을 맡습니다는 DataRow 열 값 된 시기 수정 하거나 호출 SetModified 행 또는 열 값 개체를 개별적으로 인스턴스화된 열 값 개체를 할당 하 여 합니다.To utilize the DataTable class' change tracking mechanism, the class that implements the column's data type must either implement the IChangeTracking interface, or take over the responsibility for informing the DataRow when the column value has been modified, either by calling SetModified on the row or by assigning the column value object to a separately instantiated column value object.

적용 대상

추가 정보