DataColumn.DataType Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define o tipo dos dados armazenados na coluna.
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
Valor da propriedade
Um objeto Type que representa o tipo de dados da coluna.
- Atributos
Exceções
A coluna já tem dados armazenados.
Exemplos
O exemplo a seguir adiciona colunas de vários tipos de dados a um DataTablee adiciona uma linha à tabela.
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
Comentários
Definir o DataType valor é muito importante para garantir a criação e a atualização corretas de dados em uma fonte de dados.
A DataType propriedade dá suporte aos seguintes tipos de dados de .NET Framework base:
bem como o seguinte tipo de matriz:
Byte[]
Uma exceção é gerada ao alterar essa propriedade depois que a coluna começa a armazenar dados.
Se AutoIncrement for definido true
como antes de definir a DataType propriedade e você tentar definir o tipo como qualquer coisa, exceto um tipo inteiro, uma exceção será gerada.
Observação
Uma coluna de tipo Byte[]
de dados requer tratamento especial em determinados casos, pois, ao contrário dos tipos de dados base .NET Framework, é um tipo de dados de referência. Se uma coluna do tipo Byte[]
de dados for usada como um PrimaryKey, ou como uma Sort chave ou RowFilter para um DataView, qualquer alteração no valor da coluna deverá envolver a atribuição do valor da Byte[]
coluna a um objeto instanciado Byte[]
separadamente. Essa atribuição é necessária para disparar a atualização dos índices internos usados pela classificação, filtragem e operações de chave primária. Isso é ilustrado pelo exemplo a seguir:
byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;
Observação
Embora seja possível definir uma coluna como um tipo de dados diferente dos tipos de dados base .NET Framework e Byte[]
, essa coluna será tratada como um tipo definido pelo usuário, sujeito às restrições de uso a seguir. (Para obter mais informações sobre tipos definidos pelo usuário, consulte Criando e usando tipos de User-Defined)
A coluna não pode fazer parte de uma RowFilter expressão ou Select .
Se a coluna for usada como um PrimaryKey, ou como um Sort ou para um DataView, ela deverá ser tratada como um campo imutável; os dados da coluna não deverão ser alterados depois de adicionados à tabela.
Ela ColumnMapping só pode ser definida como
MappingType.Element
.A classe que implementa o tipo de dados da coluna deve ser marcada com o SerializableAttributee, se necessário, implementar a ISerializable interface ou IXmlSerializable .
O suporte para controle de alterações é limitado. Para utilizar o DataTable mecanismo de controle de alterações da classe, a classe que implementa o tipo de dados da coluna deve implementar a IChangeTracking interface ou assumir a responsabilidade de informar quando DataRow o valor da coluna foi modificado, seja chamando SetModified na linha ou atribuindo o objeto de valor de coluna a um objeto de valor de coluna instanciado separadamente.