DataColumn.DataType Propriété

Définition

Obtient ou définit le type des données stockées dans la colonne.Gets or sets the type of data stored in the column.

public:
 property Type ^ DataType { Type ^ get(); void set(Type ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
[System.Data.DataSysDescription("DataColumnDataTypeDescr")]
public Type DataType { get; set; }
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.A Type object that represents the column data type.

Attributs

Exceptions

La colonne contient déjà des données stockées.The column already has data stored.

Exemples

L’exemple suivant ajoute des colonnes de plusieurs types de données DataTableà un, puis ajoute une ligne à la table.The following example adds columns of several data types to a DataTable, and then adds one row to the 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 DataType de la valeur est très importante pour garantir la création et la mise à jour correctes des données dans une source de données.Setting the DataType value is very important to guaranteeing the correct creation and updating of data in a data source.

La DataType propriété prend en charge les types de données de .NET Framework de base suivants :The DataType property supports the following base .NET Framework data types:

ainsi que le type de tableau suivant :as well as the following array type:

  • Byte[]

Une exception est générée lors de la modification de cette propriété après que la colonne a commencé à stocker des données.An exception is generated when changing this property after the column has begun storing data.

Si AutoIncrement a la true valeur avant de définir DataType la propriété et que vous essayez de définir le type sur n’importe quel type entier, une exception est générée.If AutoIncrement is set to true before setting the DataType property, and you try to set the type to anything except an integer type, an exception is generated.

Notes

Dans certains cas, une Byte[] colonne de type de données nécessite un traitement spécial, car, contrairement aux types de données de base .NET Framework, il s’agit d’un type de données de référence.A column of data type Byte[] requires special treatment in certain cases since, unlike the base .NET Framework data types, it is a reference data type. Si une colonne de type Byte[] de données est utilisée PrimaryKeyen tant que, ou Sort en RowFilter tant que clé DataViewou pour un, toute modification apportée à la valeur Byte[] de colonne doit impliquer l’attribution de la valeur de colonne à un instancié séparéByte[] objet.If a column of data type Byte[] is used as a PrimaryKey, or as a Sort or RowFilter key for a DataView, any change to the column value must involve assigning the Byte[] column value to a separately instantiated Byte[] object. Cette attribution est requise pour déclencher la mise à jour des index internes utilisés par les opérations de tri, de filtrage et de clé primaire.This assignment is required to trigger the update of the internal indexes used by sorting, filtering, and primary key operations. Ceci est illustré dans l'exemple suivant :This is illustrated by the following example:

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 comme type de données autre que les types de données Byte[]de base .NET Framework et, une telle colonne sera traitée comme un type défini par l’utilisateur, selon les restrictions d’utilisation suivantes.Although it is possible to define a column as data type other than the base .NET Framework data types and Byte[], such a column will be treated as a user-defined type, subject to the following usage restrictions. (Pour plus d’informations sur les types définis par l’utilisateur, consultez création et utilisation de types définis par l’utilisateur.)(For more information on user-defined types, see Creating and Using User-Defined Types.)

  • La colonne ne peut pas faire partie RowFilter d' Select une expression ou.The column cannot be part of a RowFilter or Select expression.

  • Si la colonne est utilisée en PrimaryKey Sort tant que ou pour une 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.If the column is used as a PrimaryKey, or as a Sort or for a DataView, it must be treated as an immutable field; the column data must not be changed once it has been added to the table.

  • ColumnMapping SaMappingType.Elementvaleur ne peut être que.Its ColumnMapping can be only set to MappingType.Element.

  • La classe qui implémente le type de données de la colonne doit être marquée avec SerializableAttributeet, si nécessaire, implémenter l' IXmlSerializable ISerializable interface ou.The class that implements the column's data type must be must be marked with the SerializableAttribute, and if necessary implement the ISerializable or IXmlSerializable interface.

  • La prise en charge du suivi des modifications est limitée.Support for change tracking is limited. Pour utiliser le DataTable mécanisme de suivi des modifications de la classe, la classe qui implémente le type de données de la IChangeTracking colonne doit implémenter l’interface ou assumer la responsabilité DataRow de l’informant de la valeur de la colonne. modifié, soit en appelant SetModified sur la ligne, soit en assignant l’objet de valeur de colonne à un objet de valeur de colonne instancié séparément.To utilize the DataTable class' change tracking mechanism, the class that implements the column's data type must either implement the IChangeTracking interface, or take over the responsibility for informing the DataRow when the column value has been modified, either by calling SetModified on the row or by assigning the column value object to a separately instantiated column value object.

S’applique à

Voir aussi