Partager via


DataColumn.DataType Propriété

Définition

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.

S’applique à

Voir aussi