DataColumn.DataType Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví typ dat uložených ve sloupci.
public:
property Type ^ DataType { Type ^ get(); void set(Type ^ value); };
[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))>]
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
Hodnota vlastnosti
Objekt Type , který představuje datový typ sloupce.
- Atributy
Výjimky
Sloupec už má uložená data.
Příklady
Následující příklad přidá sloupce několika datových typů do DataTablea pak přidá jeden řádek do tabulky.
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
Poznámky
DataType Nastavení hodnoty je velmi důležité pro zajištění správného vytváření a aktualizace dat ve zdroji dat.
Vlastnost DataType podporuje následující základní datové typy rozhraní .NET Framework:
a také následující typ pole:
Byte[]
Výjimka se vygeneruje při změně této vlastnosti poté, co sloupec začal ukládat data.
Pokud AutoIncrement je nastavena na true
před nastavením DataType vlastnosti a pokusíte se nastavit typ na cokoli kromě typu celé číslo, vygeneruje se výjimka.
Poznámka
Sloupec datového typu Byte[]
vyžaduje v některých případech zvláštní ošetření, protože na rozdíl od základních datových typů rozhraní .NET Framework se jedná o referenční datový typ. Pokud se sloupec datového typu Byte[]
používá jako PrimaryKey, nebo jako Sort klíč nebo RowFilter pro DataView, musí jakákoli změna hodnoty sloupce zahrnovat přiřazení Byte[]
hodnoty sloupce k objektu s samostatnou instancí Byte[]
. Toto přiřazení se vyžaduje k aktivaci aktualizace interních indexů používaných při řazení, filtrování a operacích primárního klíče. To je znázorněno na následujícím příkladu:
byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;
Poznámka
I když je možné definovat sloupec jako datový typ jiný než základní datové typy rozhraní .NET Framework a Byte[]
, bude takový sloupec považován za typ definovaný uživatelem s výhradou následujících omezení použití. (Další informace o uživatelsky definovaných typech najdete v tématu Vytváření a používání typů User-Defined.)
Pokud se sloupec používá jako PrimaryKey, nebo jako Sort nebo pro DataView, musí se s ním zacházet jako s neměnným polem; data sloupce nesmí být po přidání do tabulky změněna.
Je ColumnMapping možné ji nastavit pouze na
MappingType.Element
.Třída, která implementuje datový typ sloupce, musí být označena pomocí SerializableAttribute, a v případě potřeby implementovat ISerializable rozhraní nebo IXmlSerializable .
Podpora sledování změn je omezená. Aby bylo možné využít DataTable mechanismus sledování změn třídy, třída, která implementuje datový typ sloupce, musí buď implementovat IChangeTracking rozhraní, nebo převzít odpovědnost za informování o DataRow změně hodnoty sloupce, a to buď voláním SetModified na řádku nebo přiřazením objektu hodnoty sloupce k objektu hodnoty sloupce samostatně instance.