Teilen über


DataColumn.DataType Eigenschaft

Definition

Ruft den Typ der in der Spalte gespeicherten Daten ab oder legt diesen fest.

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

Eigenschaftswert

Ein Type, der den Datentyp der Spalte darstellt.

Attribute

Ausnahmen

In der Spalte sind bereits Daten gespeichert.

Beispiele

Im folgenden Beispiel werden Spalten mit mehreren Datentypen zu einem DataTablehinzugefügt und dann der Tabelle eine Zeile hinzugefügt.

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

Hinweise

Das Festlegen des DataType Werts ist sehr wichtig, um die richtige Erstellung und Aktualisierung von Daten in einer Datenquelle zu gewährleisten.

Die DataType -Eigenschaft unterstützt die folgenden Basisdatentypen .NET Framework:

sowie den folgenden Arraytyp:

  • Byte[]

Eine Ausnahme wird generiert, wenn diese Eigenschaft geändert wird, nachdem die Spalte mit dem Speichern von Daten begonnen hat.

Wenn AutoIncrement vor dem Festlegen der DataType -Eigenschaft auf true festgelegt wird und Sie versuchen, den Typ auf einen beliebigen Typ außer einem ganzzahligen Typ festzulegen, wird eine Ausnahme generiert.

Hinweis

Eine Spalte des Datentyps Byte[] erfordert in bestimmten Fällen eine besondere Behandlung, da es sich im Gegensatz zum Basisdatentyp .NET Framework um einen Verweisdatentyp handelt. Wenn eine Spalte des Datentyps Byte[] als , oder als Sort schlüssel für RowFilter ein PrimaryKeyDataViewverwendet wird, muss jede Änderung des Spaltenwerts das Zuweisen des Byte[] Spaltenwerts zu einem separat instanziierten Byte[] Objekt beinhalten. Diese Zuweisung ist erforderlich, um die Aktualisierung der internen Indizes auszulösen, die durch Sortierungs-, Filter- und Primärschlüsselvorgänge verwendet werden. Dies wird im folgenden Beispiel illustriert:

byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;

Hinweis

Obwohl es möglich ist, eine Spalte als anderen Datentyp als den Basisdatentyp .NET Framework und Byte[]zu definieren, wird eine solche Spalte als benutzerdefinierter Typ behandelt, vorbehaltlich der folgenden Nutzungseinschränkungen. (Weitere Informationen zu benutzerdefinierten Typen finden Sie unter Erstellen und Verwenden von User-Defined-Typen.

  • Die Spalte darf nicht Teil eines RowFilter Ausdrucks oder Select sein.

  • Wenn die Spalte als PrimaryKey, oder als oder Sort für ein DataViewverwendet wird, muss sie als unveränderliches Feld behandelt werden. Die Spaltendaten dürfen nicht geändert werden, nachdem sie der Tabelle hinzugefügt wurden.

  • Es ColumnMapping kann nur auf MappingType.Elementfestgelegt werden.

  • Die Klasse, die den Datentyp der Spalte implementiert, muss mit SerializableAttributegekennzeichnet werden und ggf. die ISerializable -Schnittstelle oder IXmlSerializable implementieren.

  • Die Unterstützung für die Änderungsnachverfolgung ist begrenzt. Um den Änderungsnachverfolgungsmechanismus der DataTable Klasse zu nutzen, muss die Klasse, die den Datentyp der Spalte implementiert, entweder die IChangeTracking Schnittstelle implementieren oder die Verantwortung für die DataRow Information übernehmen, wenn der Spaltenwert geändert wurde, entweder durch Aufrufen SetModified der Zeile oder durch Zuweisen des Spaltenwertobjekts zu einem separat instanziierten Spaltenwertobjekt.

Gilt für:

Weitere Informationen