Adicionando colunas a um DataTableAdding Columns to a DataTable

Um DataTable contém uma coleção de DataColumn objetos referenciados pela colunas propriedade da tabela.A DataTable contains a collection of DataColumn objects referenced by the Columns property of the table. Esta coleção de colunas, junto com quaisquer restrições, define o esquema, ou a estrutura, da tabela.This collection of columns, along with any constraints, defines the schema, or structure, of the table.

Você cria DataColumn objetos dentro de uma tabela usando o DataColumn construtor, ou chamando o Add método do colunaspropriedade de tabela, que é um 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. O Add método aceita opcional ColumnName, DataType, e expressão argumentos e cria um novo DataColumn como um membro da coleção.The Add method accepts optional ColumnName, DataType, and Expression arguments and creates a new DataColumn as a member of the collection. Ele também aceita um existente DataColumn do objeto e adiciona-o à coleção e retorna uma referência ao adicionado DataColumn se solicitado.It also accepts an existing DataColumn object and adds it to the collection, and returns a reference to the added DataColumn if requested. Porque DataTable objetos não são específicos para qualquer fonte de dados, tipos do .NET Framework são usados ao especificar o tipo de dados de uma DataColumn.Because DataTable objects are not specific to any data source, .NET Framework types are used when specifying the data type of a DataColumn.

O exemplo a seguir adiciona quatro colunas para um 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));  

No exemplo, observe que as propriedades para o CustID coluna estão configuradas para não permitir DBNull valores e para restringir os valores sejam exclusivos.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. No entanto, se você definir a CustID coluna como a coluna de chave primária da tabela, o AllowDBNull propriedade será definida automaticamente como false e o Unique propriedade será definida automaticamente como verdadeira.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. Para obter mais informações, consulte definindo chaves primárias.For more information, see Defining Primary Keys.

Cuidado

Se um nome de coluna não for fornecido para uma coluna, a coluna recebe um nome padrão incremental de colunaN, começando com "Column1", quando ele é adicionado para o 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. É recomendável que você evite a convenção de nomenclatura de "colunaN" quando você fornece um nome de coluna, porque o nome fornecido pode entrar em conflito com um nome de coluna padrão existente na 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 o nome fornecido já existir, será gerada uma exceção.If the supplied name already exists, an exception is thrown.

Se você estiver usando XElement como DataType de um DataColumn no DataTable, a serialização XML não funcionará quando você ler dados.If you are using XElement as the DataType of a DataColumn in the DataTable, XML serialization will not work when you read in data. Por exemplo, se você escreve um XmlDocument usando o método DataTable.WriteXml, na serialização para XML há um nó pai adicional no 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. Para resolver esse problema, use o tipo SqlXml em vez de XElement.To work around this problem, use the SqlXml type instead of XElement. ReadXml e WriteXml funcionam corretamente com SqlXml.ReadXml and WriteXml work correctly with SqlXml.

Consulte tambémSee also