Freigeben über


DataColumn.DataType Eigenschaft

Definition

Dient zum Abrufen oder Festlegen des Datentyps, der in der Spalte gespeichert ist.

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

Eigenschaftswert

Ein Type Objekt, das den Spaltendatentyp darstellt.

Attribute

Ausnahmen

Die Spalte enthält bereits Daten.

Beispiele

Im folgenden Beispiel werden einer DataTableTabelle Spalten mit mehreren Datentypen hinzugefügt. Anschließend wird 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 korrekte Erstellung und Aktualisierung von Daten in einer Datenquelle zu gewährleisten.

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

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 sie vor dem Festlegen der DataType Eigenschaft festgelegt true ist und Sie versuchen, den Typ auf einen ganzzahligen Typ festzulegen, wird eine Ausnahme generiert.

Hinweis

Eine Spalte vom Datentyp Byte[] erfordert in bestimmten Fällen eine spezielle Behandlung, da es sich im Gegensatz zu den .NET Framework-Basisdatentypen um einen Verweisdatentyp handelt. Wenn eine Spalte vom Datentyp Byte[] als oder PrimaryKeyals Schlüssel SortRowFilter für eine DataViewSpalte verwendet wird, muss jede Änderung des Spaltenwerts das Zuweisen des Byte[] Spaltenwerts zu einem separat instanziierten Byte[] Objekt umfassen. Diese Zuweisung ist erforderlich, um die Aktualisierung der internen Indizes auszulösen, die von Sortier-, Filter- und Primärschlüsselvorgängen verwendet werden. Dies wird durch das folgende Beispiel veranschaulicht:

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 die .NET Framework-Basisdatentypen zu definieren, und Byte[]eine solche Spalte wird als benutzerdefinierter Typ behandelt, vorbehaltlich der folgenden Verwendungseinschränkungen. (Weitere Informationen zu benutzerdefinierten Typen finden Sie unter Creating and Using User-Defined Types)

  • Die Spalte kann nicht Teil eines RowFilter Oder Select Ausdrucks sein.

  • Wenn die Spalte als oder PrimaryKeyals oder Sort für ein DataViewFeld verwendet 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 dem SerializableAttributeDatentyp gekennzeichnet sein und ggf. die ISerializableIXmlSerializable Schnittstelle implementieren.

  • Die Unterstützung für die Änderungsnachverfolgung ist eingeschränkt. 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 übernehmen, wenn der DataRow 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