DataColumn.DataType Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta il tipo di dati memorizzato nella colonna.
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
Valore della proprietà
Oggetto Type che rappresenta il tipo di dati della colonna.
- Attributi
Eccezioni
Nella colonna sono già memorizzati i dati.
Esempio
Nell'esempio seguente vengono aggiunte colonne di diversi tipi di dati a un DataTableoggetto e quindi viene aggiunta una riga alla tabella.
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
Commenti
L'impostazione del DataType valore è molto importante per garantire la corretta creazione e l'aggiornamento dei dati in un'origine dati.
La DataType proprietà supporta i tipi di dati di .NET Framework seguenti:
oltre al tipo di matrice seguente:
Byte[]
Un'eccezione viene generata quando si modifica questa proprietà dopo che la colonna ha iniziato a archiviare i dati.
Se AutoIncrement è impostato su true
prima di impostare la DataType proprietà e si tenta di impostare il tipo su qualsiasi elemento tranne un tipo integer, viene generata un'eccezione.
Nota
Una colonna di tipo di Byte[]
dati richiede un trattamento speciale in determinati casi perché, a differenza dei tipi di dati di .NET Framework di base, è un tipo di dati di riferimento. Se una colonna di tipo di Byte[]
dati viene usata come oggetto o come PrimaryKeySort chiave o RowFilter per un DataViewoggetto , qualsiasi modifica al valore della colonna deve comportare l'assegnazione del Byte[]
valore della colonna a un oggetto creato Byte[]
separatamente. Questa assegnazione è necessaria per attivare l'aggiornamento degli indici interni usati tramite l'ordinamento, il filtro e le operazioni di chiave primaria. Questo comportamento è illustrato nell'esempio seguente:
byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;
Nota
Anche se è possibile definire una colonna come tipo di dati diverso dai tipi di dati di .NET Framework di base e Byte[]
, tale colonna verrà considerata come un tipo definito dall'utente, soggetto alle restrizioni di utilizzo seguenti. Per altre informazioni sui tipi definiti dall'utente, vedere Creazione e uso di tipi di User-Defined)
La colonna non può far parte di un'espressione RowFilter o Select .
Se la colonna viene usata come , o come PrimaryKeySort o per DataView, deve essere considerata come un campo non modificabile. I dati della colonna non devono essere modificati dopo l'aggiunta alla tabella.
La proprietà ColumnMapping può essere impostata solo su
MappingType.Element
.La classe che implementa il tipo di dati della colonna deve essere contrassegnata con SerializableAttributee, se necessario, implementare l'interfaccia ISerializable o IXmlSerializable .
Il supporto per il rilevamento delle modifiche è limitato. Per utilizzare il DataTable meccanismo di rilevamento delle modifiche della classe, la classe che implementa il tipo di dati della colonna deve implementare l'interfaccia IChangeTracking oppure assumere la responsabilità di informare il DataRow momento in cui il valore della colonna è stato modificato, chiamando SetModified sulla riga o assegnando l'oggetto valore della colonna a un oggetto valore di colonna istanza separata.