DataColumn.DataType DataColumn.DataType DataColumn.DataType DataColumn.DataType Property

Definition

Ruft den Typ der in der Spalte gespeicherten Daten ab oder legt diesen fest.Gets or sets the type of data stored in the column.

public:
 property Type ^ DataType { Type ^ get(); void set(Type ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
[System.Data.DataSysDescription("DataColumnDataTypeDescr")]
public Type DataType { get; set; }
member this.DataType : Type with get, set
Public Property DataType As Type

Eigenschaftswert

Ein Type, der den Datentyp der Spalte darstellt.A Type object that represents the column data type.

Ausnahmen

In der Spalte sind bereits Daten gespeichert.The column already has data stored.

Beispiele

Im folgenden Beispiel werden einem DataTableSpalten mit mehreren Datentypen hinzugefügt, und anschließend wird der Tabelle eine Zeile hinzugefügt.The following example adds columns of several data types to a DataTable, and then adds one row to the 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

Hinweise

Das Festlegen DataType des Werts ist äußerst wichtig, um die korrekte Erstellung und Aktualisierung von Daten in einer Datenquelle zu gewährleisten.Setting the DataType value is very important to guaranteeing the correct creation and updating of data in a data source.

Die DataType -Eigenschaft unterstützt die folgenden Basis .NET Framework-Datentypen:The DataType property supports the following base .NET Framework data types:

ebenso wie der folgende Arraytyp:as well as the following array type:

  • Byte[]

Eine Ausnahme wird generiert, wenn diese Eigenschaft geändert wird, nachdem die Spalte mit dem Speichern der Daten begonnen hat.An exception is generated when changing this property after the column has begun storing data.

Wenn AutoIncrement DataType auf true festgelegt ist, bevor die-Eigenschaft festgelegt wird, und Sie versuchen, den Typ auf einen anderen Wert als einen ganzzahligen Typ festzulegen, wird eine Ausnahme generiert.If AutoIncrement is set to true before setting the DataType property, and you try to set the type to anything except an integer type, an exception is generated.

Hinweis

Eine Spalte des-Datentyps Byte[] erfordert in bestimmten Fällen eine besondere Behandlung, da es im Gegensatz zu den Basis .NET Framework-Datentypen ein Verweis Datentyp ist.A column of data type Byte[] requires special treatment in certain cases since, unlike the base .NET Framework data types, it is a reference data type. Wenn eine Spalte des Byte[] -Datentyps PrimaryKeyals Sort oder als-oder RowFilter -Schlüssel für einen DataViewverwendet wird, muss jede Änderung am Spaltenwert das Zuweisen Byte[] des Spaltenwerts zu einer separat instanziierten enthalten.Byte[] -Objekt.If a column of data type Byte[] is used as a PrimaryKey, or as a Sort or RowFilter key for a DataView, any change to the column value must involve assigning the Byte[] column value to a separately instantiated Byte[] object. Diese Zuweisung ist erforderlich, um die Aktualisierung der internen Indizes, die von Sortier-, Filterungs-und Primärschlüssel Vorgängen verwendet werden, zu initiieren.This assignment is required to trigger the update of the internal indexes used by sorting, filtering, and primary key operations. Dies wird im folgenden Beispiel illustriert:This is illustrated by the following example:

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 einen anderen Datentyp als die Basis .NET Framework-Datentypen Byte[]und zu definieren, wird eine solche Spalte als benutzerdefinierter Typ behandelt, je nach den folgenden Nutzungseinschränkungen.Although it is possible to define a column as data type other than the base .NET Framework data types and Byte[], such a column will be treated as a user-defined type, subject to the following usage restrictions. (Weitere Informationen zu benutzerdefinierten Typen finden Sie unter Erstellen und Verwenden von benutzerdefinierten Typen.)(For more information on user-defined types, see Creating and Using User-Defined Types.)

  • Die Spalte kann nicht Teil RowFilter eines-oder Select -Ausdrucks sein.The column cannot be part of a RowFilter or Select expression.

  • Wenn die Spalte als PrimaryKeyoder Sort als oder als oder DataViewals 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.If the column is used as a PrimaryKey, or as a Sort or for a DataView, it must be treated as an immutable field; the column data must not be changed once it has been added to the table.

  • Der ColumnMapping Wert kann nur auf MappingType.Elementfestgelegt werden.Its ColumnMapping can be only set to MappingType.Element.

  • Die Klasse, die den Datentyp der Spalte implementiert, muss mit dem SerializableAttributegekennzeichnet werden. Falls erforderlich, muss die-Schnittstelle oder IXmlSerializable die ISerializable -Schnittstelle implementiert werden.The class that implements the column's data type must be must be marked with the SerializableAttribute, and if necessary implement the ISerializable or IXmlSerializable interface.

  • Die Unterstützung für die Änderungs Nachverfolgung ist beschränkt.Support for change tracking is limited. Um den DataTable Mechanismus für die Änderungs Nachverfolgung der-Klasse zu verwenden, muss die Klasse, die den Datentyp IChangeTracking der Spalte implementiert, entweder die-Schnittstelle implementieren DataRow oder die Verantwortung für die Information übernehmen, wenn der Spaltenwert geändert, entweder durch Aufrufen SetModified von für die Zeile oder durch Zuweisen des Spaltenwert Objekts zu einem separat instanziierten Spaltenwert Objekt.To utilize the DataTable class' change tracking mechanism, the class that implements the column's data type must either implement the IChangeTracking interface, or take over the responsibility for informing the DataRow when the column value has been modified, either by calling SetModified on the row or by assigning the column value object to a separately instantiated column value object.

Gilt für:

Siehe auch