DataColumn.DataType Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.