DataColumn.DataType Egenskap

Definition

Hämtar eller anger vilken typ av data som lagras i kolumnen.

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; }
[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")>]
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
Public Property DataType As Type

Egenskapsvärde

Ett Type objekt som representerar kolumndatatypen.

Attribut

Undantag

Kolumnen har redan lagrade data.

Exempel

I följande exempel läggs kolumner med flera datatyper till i en DataTableoch lägger sedan till en rad i tabellen.

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

Kommentarer

DataType Det är mycket viktigt att ange värdet för att garantera korrekt skapande och uppdatering av data i en datakälla.

Egenskapen DataType stöder följande grundläggande .NET Framework-datatyper:

samt följande matristyp:

  • Byte[]

Ett undantag genereras när du ändrar den här egenskapen när kolumnen har börjat lagra data.

Om AutoIncrement är inställt på true innan du anger DataType egenskapen och du försöker ange typen till något annat än en heltalstyp genereras ett undantag.

Note

En kolumn av datatyp Byte[] kräver särskild behandling i vissa fall eftersom den, till skillnad från basdatatypen .NET Framework, är en referensdatatyp. Om en kolumn av datatyp Byte[] används som en PrimaryKey, eller som en Sort eller RowFilter en nyckel för en DataView, måste en ändring av kolumnvärdet innebära att Byte[] tilldela kolumnvärdet till ett separat instansierat Byte[] objekt. Den här tilldelningen krävs för att utlösa uppdateringen av de interna index som används vid sortering, filtrering och primärnyckelåtgärder. Detta illustreras av följande exempel:

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

Note

Även om det är möjligt att definiera en kolumn som en annan datatyp än basdatatyperna .NET Framework och Byte[], behandlas en sådan kolumn som en användardefinierad typ, med följande användningsbegränsningar. (Mer information om användardefinierade typer finns i Skapa och använda User-Defined typer)

  • Kolumnen får inte ingå i ett eller Select ett RowFilter uttryck.

  • Om kolumnen används som , PrimaryKeyeller som eller Sort för ett DataViewmåste den behandlas som ett oföränderligt fält. Kolumndata får inte ändras när de har lagts till i tabellen.

  • Dess ColumnMapping kan bara anges till MappingType.Element.

  • Klassen som implementerar kolumnens datatyp måste markeras med SerializableAttribute, och om det behövs implementera ISerializable eller-gränssnittet IXmlSerializable .

  • Stöd för ändringsspårning är begränsat. För att använda DataTable klassens mekanism för ändringsspårning måste klassen som implementerar kolumnens datatyp antingen implementera IChangeTracking gränssnittet eller ta över ansvaret för att DataRow informera när kolumnvärdet har ändrats, antingen genom att anropa SetModified på raden eller genom att tilldela kolumnvärdeobjektet till ett separat instansierat kolumnvärdeobjekt.

Gäller för

Se även