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 de données stockées dans la colonne.
public:
property Type ^ DataType { Type ^ get(); void set(Type ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public Type DataType { get; set; }
[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))>]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
member this.DataType : Type with 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 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 elle est définie 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.
Note
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 comme un PrimaryKey, ou comme clé Sort ou RowFilter pour un DataView, toute modification apportée à 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 le tri, le filtrage et les opérations de clé primaire. Ceci est illustré par l’exemple suivant :
byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;
Note
Bien qu’il soit possible de définir une colonne comme 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 ou Select d’une RowFilter expression.
Si la colonne est utilisée comme un PrimaryKey, ou comme Sort un 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.
Il 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 le SerializableAttribute, et si nécessaire implémenter l’interface ou IXmlSerializable l’interfaceISerializable.
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 implémenter l’interface IChangeTracking ou assumer la responsabilité d’informer DataRow le moment où 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 de valeur de colonne instancié séparément.