Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

DataColumn.DataType propriété

 

Date de publication : novembre 2016

Obtient ou définit le type de données stockées dans la colonne.

Espace de noms:   System.Data
Assembly:  System.Data (dans System.Data.dll)

public Type DataType { get; set; }

Valeur de propriété

Type: System.Type

Un Type objet qui représente le type de données.

Exception Condition
ArgumentException

La colonne a déjà des données stockées.

Définition de la DataType valeur est très important de garantir la création correcte et mise à jour des données dans une source de données.

Le DataType propriété prend en charge les types de données .NET Framework de base suivants :

ainsi que le type de tableau suivantes :

  • Byte[]

Une exception est générée lors de la modification de cette propriété après la colonne a commencé à stocker des données.

Si AutoIncrement est définie sur true avant de définir la DataType propriété et que vous essayez de définir le type autre qu’un type entier, une exception est générée.

System_CAPS_noteRemarque

Une colonne de type de données Byte[] nécessite un traitement spécial dans certains cas puisque, contrairement aux types de données .NET Framework de base, c’est un type de données de référence. Si une colonne de type de données Byte[] est utilisé comme un PrimaryKey, ou comme un Sort ou RowFilter clé pour un DataView, toute modification apportée à la valeur de colonne doit impliquer l’assignation la Byte[] valeur colonne instancié séparément Byte[] objet. Cette assignation est requise pour déclencher la mise à jour des index internes utilisés par le tri, le filtrage et les opérations de clé primaires. 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;
System_CAPS_noteRemarque

Bien qu’il soit possible de définir une colonne comme type de données autres que les types de données .NET Framework base et Byte[], une telle colonne sera considérée comme un type défini par l’utilisateur, les restrictions d’utilisation suivantes. (Pour plus d’informations sur les types définis par l’utilisateur, voir Creating and Using User-Defined Types.)

  • La colonne ne peut pas faire partie d’un RowFilter ou Select expression.

  • Si la colonne est utilisée comme un PrimaryKey, ou comme un Sort ou pour un DataView, elle doit être traitée comme un champ immuable ; les données de colonne ne doivent pas être changées une fois qu’il a été ajouté à la table.

  • Son ColumnMapping peut uniquement être définie sur MappingType.Element.

  • La classe qui implémente le type de données doit être marqué avec le SerializableAttribute, et si nécessaire, implémenter le ISerializable ou IXmlSerializable interface.

  • Prise en charge pour le suivi des modifications est limitée. 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 colonne doit soit implémenter la IChangeTracking d’interface, ou prendre la responsabilité d’informer le DataRow lorsque la valeur de colonne a été modifiée, en appelant SetModified sur la ligne ou en assignant l’objet de valeur de colonne à un objet de valeur de colonne instancié séparément.

L’exemple suivant ajoute des colonnes de différents 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;  
 }

.NET Framework
Disponible depuis 1.1
Retour au début
Afficher: