Partager via


DataColumn.DataType Propriété

Définition

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.

S’applique à

Voir aussi