DataColumn.DataType Tulajdonság

Definíció

Lekéri vagy beállítja az oszlopban tárolt adatok típusát.

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

Tulajdonság értéke

Az Type oszlop adattípusát képviselő objektum.

Attribútumok

Kivételek

Az oszlopban már vannak tárolt adatok.

Példák

Az alábbi példa több adattípusból álló oszlopokat ad hozzá egy DataTabletáblához, majd hozzáad egy sort a táblához.

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

Megjegyzések

DataType Az érték beállítása nagyon fontos az adatforrásban lévő adatok megfelelő létrehozásához és frissítéséhez.

A DataType tulajdonság a következő alapszintű .NET Keretrendszer-adattípusokat támogatja:

valamint a következő tömbtípust:

  • Byte[]

Kivétel jön létre a tulajdonság módosításakor, miután az oszlop megkezdte az adatok tárolását.

Ha AutoIncrement a tulajdonság beállítása true előtt be van állítvaDataType, és a típust csak egész számra próbálja beállítani, kivétel jön létre.

Note

A Byte[] adattípusú oszlop bizonyos esetekben speciális kezelést igényel, mivel az alapszintű .NET-keretrendszer adattípusától eltérően referenciaadat-típus. Ha egy adattípusú Byte[] oszlopot használnak , vagy kulcsként PrimaryKeySortRowFilter egy oszlophozDataView, az oszlop értékének bármilyen módosításához hozzá kell rendelni az Byte[] oszlopértéket egy külön példányosított Byte[] objektumhoz. Ez a hozzárendelés szükséges a rendezési, szűrési és elsődleges kulcsműveletek által használt belső indexek frissítésének aktiválásához. Ezt a következő példa szemlélteti:

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

Note

Bár az oszlopokat az alap .NET Keretrendszer adattípusától és a Byte[]-tól eltérő adattípusként is meg lehet határozni, az ilyen oszlopokat felhasználó által definiált típusként kezeli a rendszer, az alábbi használati korlátozásoknak megfelelően. (További információ a felhasználó által definiált típusokról: User-Defined-típusok létrehozása és használata)

  • Az oszlop nem lehet egy vagy RowFilter több Select kifejezés része.

  • Ha az oszlopot nem módosítható mezőkéntPrimaryKey, vagy nem módosítható mezőként SortDataView használják, akkor az oszlop adatait nem lehet módosítani, miután hozzáadták a táblához.

  • Az értéke ColumnMapping csak a következőre állítható be MappingType.Element: .

  • Az oszlop adattípusát megvalósító osztályt meg kell jelölni a SerializableAttribute, és szükség esetén implementálni kell az ISerializable illesztőt.IXmlSerializable

  • A változáskövetés támogatása korlátozott. Az DataTable osztály változáskövetési mechanizmusának használatához az oszlop adattípusát megvalósító osztálynak implementálnia kell az IChangeTracking illesztőt DataRow , vagy át kell vennie a felelősséget az oszlopérték módosításának időpontjáról a sor meghívásával SetModified vagy az oszlopérték objektum külön példányosított oszlopérték-objektumhoz való hozzárendelésével.

A következőre érvényes:

Lásd még