Aggiunta di colonne a un oggetto DataTableAdding Columns to a DataTable

Oggetto DataTable contiene una raccolta di DataColumn gli oggetti a cui fanno riferimento le colonne proprietà della tabella.A DataTable contains a collection of DataColumn objects referenced by the Columns property of the table. Tale raccolta di colonne, insieme a eventuali vincoli, consente di definire lo schema, o struttura, della tabella.This collection of columns, along with any constraints, defines the schema, or structure, of the table.

Crei DataColumn oggetti all'interno di una tabella utilizzando il DataColumn costruttore, oppure chiamando il Aggiungi metodo del colonneproprietà della tabella, ovvero un DataColumnCollection.You create DataColumn objects within a table by using the DataColumn constructor, or by calling the Add method of the Columns property of the table, which is a DataColumnCollection. Il Add metodo accetta facoltativo nomecolonna, DataType, e espressione argomenti e crea un nuovo DataColumn come membro della raccolta.The Add method accepts optional ColumnName, DataType, and Expression arguments and creates a new DataColumn as a member of the collection. L'attività accetta inoltre un oggetto esistente DataColumn dell'oggetto e lo aggiunge alla raccolta e restituisce un riferimento all'oggetto aggiunto DataColumn se richiesto.It also accepts an existing DataColumn object and adds it to the collection, and returns a reference to the added DataColumn if requested. In quanto DataTable gli oggetti non sono specifici di qualsiasi origine dati, i tipi di .NET Framework vengono usati quando si specifica il tipo di dati di un DataColumn.Because DataTable objects are not specific to any data source, .NET Framework types are used when specifying the data type of a DataColumn.

L'esempio seguente aggiunge quattro colonne a un DataTable.The following example adds four columns to a 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));  

Nell'esempio, si noti che le proprietà per il CustID colonna sono impostate per non consentire DBNull valori e per vincolare i valori siano univoci.In the example, notice that the properties for the CustID column are set to not allow DBNull values and to constrain values to be unique. Tuttavia, se si definisce la CustID colonna come colonna chiave primaria della tabella, il AllowDBNull verrà automaticamente impostata su false e il Unique verrà automaticamente impostata su true.However, if you define the CustID column as the primary key column of the table, the AllowDBNull property will automatically be set to false and the Unique property will automatically be set to true. Per altre informazioni, vedere definizione di chiavi primarie.For more information, see Defining Primary Keys.

Attenzione

Se non viene fornito un nome di colonna per una colonna, la colonna viene assegnata il nome predefinito incrementale della colonnaN, a partire da "Column1", quando viene aggiunto per il DataColumnCollection.If a column name is not supplied for a column, the column is given an incremental default name of ColumnN, starting with "Column1", when it is added to the DataColumnCollection. Si consiglia di evitare la convenzione di denominazione "colonnaN" quando si fornisce un nome di colonna, perché il nome fornito sia in conflitto con un nome di colonna predefinito esistente nel DataColumnCollection.We recommend that you avoid the naming convention of "ColumnN" when you supply a column name, because the name you supply may conflict with an existing default column name in the DataColumnCollection. Se il nome fornito è già presente, viene generata un'eccezione.If the supplied name already exists, an exception is thrown.

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.If you are using XElement as the DataType of a DataColumn in the DataTable, XML serialization will not work when you read in data. 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.For example, if you write out a XmlDocument by using the DataTable.WriteXml method, upon serialization to XML there is an additional parent node in the XElement. Per risolvere questo problema, usare il tipo SqlXml invece dell'oggetto XElement.To work around this problem, use the SqlXml type instead of XElement. ReadXml e WriteXml funzionano correttamente con l'oggetto SqlXml.ReadXml and WriteXml work correctly with SqlXml.

Vedere ancheSee also