Aggiunta di colonne a un oggetto DataTable

In una DataTable è contenuta una raccolta di oggetti DataColumn a cui fa riferimento la proprietà Columns della tabella. Tale raccolta di colonne, insieme a eventuali vincoli, consente di definire lo schema, o struttura, della tabella.

È possibile creare oggetti DataColumn all'interno di una tabella tramite il costruttore DataColumn o chiamando il metodo Add della proprietà Columns della tabella, che è un DataColumnCollection. Il metodo Add accetta gli argomenti facoltativi ColumnName, DataType ed Expression e crea un nuovo DataColumn come membro della raccolta. Tale metodo accetta inoltre un oggetto DataColumn e lo aggiunge alla raccolta. Se richiesto, restituisce un riferimento al DataColumn aggiunto. Poiché gli oggetti DataTable non sono specifici di alcuna origine dati, i tipi di .NET Framework vengono usati quando si specifica il tipo di dati di un DataColumn.

Nell'esempio seguente vengono aggiunte quattro colonne a una DataTable.

Dim workTable As DataTable = New DataTable("Customers")  
  
Dim workCol As DataColumn = workTable.Columns.Add( _  
    "CustID", Type.GetType("System.Int32"))  
workCol.AllowDBNull = false  
workCol.Unique = true  
  
workTable.Columns.Add("CustLName", Type.GetType("System.String"))  
workTable.Columns.Add("CustFName", Type.GetType("System.String"))  
workTable.Columns.Add("Purchases", Type.GetType("System.Double"))  
DataTable workTable = new DataTable("Customers");  
  
DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32));  
workCol.AllowDBNull = false;  
workCol.Unique = true;  
  
workTable.Columns.Add("CustLName", typeof(String));  
workTable.Columns.Add("CustFName", typeof(String));  
workTable.Columns.Add("Purchases", typeof(Double));  

Notare che nell'esempio le proprietà per la colonna CustID sono impostate in modo da non consentire valori DBNull e da applicare vincoli ai valori per assicurarne l'univocità. Tuttavia, se si definisce la colonna CustID come colonna di chiave primaria della tabella, la proprietà AllowDBNull verrà impostata automaticamente su false e la proprietà Unique verrà impostata automaticamente su true. Per altre informazioni, vedere Definizione delle chiavi primarie.

Attenzione

Se a una colonna non viene assegnato alcun nome, questa assumerà il nome predefinito incrementale ColumnN, a partire da "Column1", quando viene aggiunta a DataColumnCollection. Si consiglia di evitare la convenzione di denominazione "ColumnN" quando si fornisce un nome di colonna, poiché è possibile che il nome fornito sia in conflitto con un nome di colonna predefinito esistente nel DataColumnCollection. Se il nome fornito è già presente, viene generata un'eccezione.

Se si sta usando l'oggetto XElement come proprietà DataType di un oggetto DataColumn nell'oggetto DataTable, la serializzazione XML non funzionerà quando si legge nei dati. Ad esempio, se si scrive un oggetto XmlDocument usando il metodo DataTable.WriteXml, durante la serializzazione in XML è presente un nodo padre aggiuntivo nell'oggetto XElement. Per risolvere questo problema, usare il tipo SqlXml invece dell'oggetto XElement. ReadXml e WriteXml funzionano correttamente con l'oggetto SqlXml.

Vedi anche