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 archiviati nella colonna.
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
Valore della proprietà
Oggetto Type che rappresenta il tipo di dati della colonna.
- Attributi
Eccezioni
La colonna contiene già dati archiviati.
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 creazione e l'aggiornamento corretti dei dati in un'origine dati.
La DataType proprietà supporta i tipi di dati .NET Framework di base seguenti:
nonché il 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 ad eccezione di un tipo integer, viene generata un'eccezione.
Annotazioni
Una colonna di tipo di Byte[] dati richiede un trattamento speciale in alcuni casi perché, a differenza dei tipi di dati di base .NET Framework, si tratta di un tipo di dati di riferimento. Se una colonna di tipo di Byte[] dati viene utilizzata come PrimaryKey, o come Sort chiave o RowFilter per un DataViewoggetto , qualsiasi modifica al valore della colonna deve comportare l'assegnazione del valore della Byte[] colonna a un oggetto di cui è stata creata Byte[] un'istanza separata. Questa assegnazione è necessaria per attivare l'aggiornamento degli indici interni usati dalle operazioni di ordinamento, filtro e chiave primaria. Questo è illustrato nell'esempio seguente:
byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;
Annotazioni
Sebbene sia possibile definire una colonna come tipo di dati diverso dai tipi di dati .NET Framework di base e Byte[], tale colonna verrà considerata come un tipo definito dall'utente, soggetta alle restrizioni di utilizzo seguenti. Per altre informazioni sui tipi definiti dall'utente, vedere Creating and Using User-Defined Types (Creazione e uso di tipi di User-Defined)
La colonna non può far parte di un'espressione RowFilter o Select .
Se la colonna viene utilizzata come PrimaryKeyo come Sort o per , DataViewdeve 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 o assumere la responsabilità di informare quando DataRow il valore della colonna è stato modificato, chiamando SetModified sulla riga o assegnando l'oggetto valore di colonna a un oggetto valore di colonna di istanza separato.