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 задано значение true
перед заданием DataType свойства, и вы пытаетесь задать для типа все, кроме целочисленного типа, создается исключение.
Примечание
Столбец типа Byte[]
данных требует особого обращения в некоторых случаях, так как, в отличие от базовых платформа .NET Framework типов данных, это ссылочный тип данных. Если столбец типа Byte[]
данных используется в качестве или в качестве PrimaryKeySort ключа DataViewдля RowFilter столбца, любое изменение значения столбца должно включать назначение 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 строки или путем назначения объекта значения столбца отдельному экземпляру объекта значения столбца.