DataColumn.DataType Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt het type gegevens opgehaald of ingesteld dat in de kolom is opgeslagen.
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
Waarde van eigenschap
Een Type object dat het kolomgegevenstype vertegenwoordigt.
- Kenmerken
Uitzonderingen
De kolom bevat al gegevens die zijn opgeslagen.
Voorbeelden
In het volgende voorbeeld worden kolommen van verschillende gegevenstypen toegevoegd aan een DataTableen vervolgens één rij aan de tabel toegevoegd.
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
Opmerkingen
Het instellen van de DataType waarde is erg belangrijk voor het garanderen van het juiste maken en bijwerken van gegevens in een gegevensbron.
De eigenschap DataType ondersteunt de volgende .NET Framework-gegevenstypen:
en het volgende matrixtype:
Byte[]
Er wordt een uitzondering gegenereerd bij het wijzigen van deze eigenschap nadat de kolom gegevens heeft opgeslagen.
Als AutoIncrement deze optie is ingesteld true voordat u de DataType eigenschap instelt en u probeert het type in te stellen op iets behalve een geheel getal, wordt er een uitzondering gegenereerd.
Note
Een kolom met gegevenstype Byte[] vereist speciale behandeling in bepaalde gevallen, omdat, in tegenstelling tot de basisgegevenstypen .NET Framework, het een referentiegegevenstype is. Als een kolom van het gegevenstype Byte[] wordt gebruikt als PrimaryKeyeen , of als sleutel SortRowFilter voor eenDataView, moet elke wijziging in de kolomwaarde betrekking hebben op het toewijzen van de Byte[] kolomwaarde aan een afzonderlijk geïnstantieerd Byte[] object. Deze toewijzing is vereist om de update van de interne indexen te activeren die worden gebruikt door bewerkingen voor sorteren, filteren en primaire sleutels. Dit wordt geïllustreerd in het volgende voorbeeld:
byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;
Note
Hoewel het mogelijk is om een kolom te definiëren als een ander gegevenstype dan de basisgegevenstypen .NET Framework en Byte[], wordt een dergelijke kolom behandeld als een door de gebruiker gedefinieerd type, afhankelijk van de volgende gebruiksbeperkingen. (Zie User-Defined typen maken en gebruiken voor meer informatie over door de gebruiker gedefinieerde typen)
De kolom kan geen deel uitmaken van een RowFilter of Select expressie.
Als de kolom wordt gebruikt als een PrimaryKeyof als een Sort of voor een DataView, moet deze worden behandeld als een onveranderbaar veld. De kolomgegevens mogen niet worden gewijzigd zodra deze aan de tabel zijn toegevoegd.
Het ColumnMapping kan alleen worden ingesteld op
MappingType.Element.De klasse die het gegevenstype van de kolom implementeert, moet worden gemarkeerd met de SerializableAttributeen indien nodig de ISerializable of IXmlSerializable interface implementeren.
Ondersteuning voor het bijhouden van wijzigingen is beperkt. Als u het mechanisme voor wijzigingen bijhouden van de DataTable klasse wilt gebruiken, moet de klasse die het gegevenstype van de kolom implementeert, de IChangeTracking interface implementeren of de verantwoordelijkheid overnemen voor het informeren DataRow wanneer de kolomwaarde is gewijzigd, hetzij door de rij aan te roepen SetModified of door het kolomwaardeobject toe te wijzen aan een afzonderlijk geïnstantieerd kolomwaardeobject.