DataColumn.DataType Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit le type des données stockées dans la colonne.
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
Valeur de propriété
Objet Type qui représente le type de données de la colonne.
- Attributs
Exceptions
La colonne contient déjà des données stockées.
Exemples
L’exemple suivant ajoute des colonnes de plusieurs types de données à un DataTable, puis ajoute une ligne à la 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 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
Remarques
La définition de la DataType valeur est très importante pour garantir la création et la mise à jour correctes des données dans une source de données.
La DataType propriété prend en charge les types de données .NET Framework de base suivants :
ainsi que le type de tableau suivant :
Byte[]
Une exception est générée lors de la modification de cette propriété une fois que la colonne a commencé à stocker des données.
Si AutoIncrement est défini sur true
avant de définir la DataType propriété et que vous essayez de définir le type sur n’importe quoi à l’exception d’un type entier, une exception est générée.
Notes
Une colonne de type Byte[]
de données nécessite un traitement spécial dans certains cas, car, contrairement aux types de données .NET Framework de base, il s’agit d’un type de données de référence. Si une colonne de type Byte[]
de données est utilisée en tant que PrimaryKey, ou en tant que Sort clé ou RowFilter pour un DataView, toute modification de la valeur de colonne doit impliquer l’affectation de la Byte[]
valeur de colonne à un objet instancié Byte[]
séparément. Cette affectation est nécessaire pour déclencher la mise à jour des index internes utilisés par les opérations de tri, de filtrage et de clé primaire. Ceci est illustré dans l'exemple suivant :
byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;
Notes
Bien qu’il soit possible de définir une colonne en tant que type de données autre que les types de données .NET Framework de base et Byte[]
, une telle colonne sera traitée comme un type défini par l’utilisateur, sous réserve des restrictions d’utilisation suivantes. (Pour plus d’informations sur les types définis par l’utilisateur, consultez Création et utilisation de types User-Defined)
La colonne ne peut pas faire partie d’une RowFilter expression ou .Select
Si la colonne est utilisée en tant que PrimaryKey, ou en tant que Sort ou pour un DataView, elle doit être traitée comme un champ immuable ; les données de colonne ne doivent pas être modifiées une fois qu’elles ont été ajoutées à la table.
Son ColumnMapping ne peut être défini que sur
MappingType.Element
.La classe qui implémente le type de données de la colonne doit être marquée avec et SerializableAttribute, si nécessaire, implémenter l’interface ISerializable ou IXmlSerializable .
La prise en charge du suivi des modifications est limitée. Pour utiliser le mécanisme de suivi des modifications de la DataTable classe, la classe qui implémente le type de données de la colonne doit soit implémenter l’interface IChangeTracking , soit assumer la responsabilité d’informer le DataRow quand la valeur de colonne a été modifiée, soit en appelant SetModified sur la ligne, soit en affectant l’objet valeur de colonne à un objet valeur de colonne instancié séparément.