Поделиться через


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[] данных используется в качестве PrimaryKeyили Sort ключа или RowFilter для 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.

  • Столбец не может быть частью RowFilter выражения или Select .

  • Если столбец используется как PrimaryKey, или Sort как или для DataView, он должен рассматриваться как неизменяемое поле; данные столбца не должны изменяться после добавления в таблицу.

  • Для нее ColumnMapping можно задать только значение MappingType.Element.

  • Класс, реализующий тип данных столбца, должен быть помечен с SerializableAttributeпомощью , и при необходимости реализовать ISerializable интерфейс или IXmlSerializable .

  • Поддержка отслеживания изменений ограничена. Чтобы использовать DataTable механизм отслеживания изменений класса, класс, реализующий тип данных столбца, должен либо реализовать IChangeTracking интерфейс, либо взять на себя ответственность за информирование DataRow при изменении значения столбца путем вызова SetModified в строке или путем назначения объекта значения столбца отдельному экземпляру объекта значения столбца.

Применяется к

См. также раздел