DataColumn.DataType Proprietà

Definizione

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.

Si applica a

Vedi anche