Adicionando colunas a um DataTableAdding Columns to a DataTable

Um DataTable contém uma coleção de DataColumn objetos referenciados pela propriedade Columns 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 objetos DataColumn em uma tabela usando o construtor DataColumn ou chamando o método Add da propriedade Columns da 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 método Add aceita argumentos de expressão ColumnName, DataTypee expression opcionais e cria uma nova 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 objeto DataColumn existente e o adiciona à coleção e retorna uma referência para a DataColumn adicionada, 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. Como os objetos DataTable não são específicos de nenhuma fonte de dados, .NET Framework tipos 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 a uma 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 da coluna CustID estão definidas para não permitir valores DBNull e para restringir valores a serem 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 coluna CustID como a coluna de chave primária da tabela, a propriedade AllowDBNull será automaticamente definida como false e a propriedade Unique será definida automaticamente como 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. 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 receberá um nome padrão incremental da colunaN, começando com "Column1", quando ela for adicionada ao 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. Recomendamos que você evite a Convenção de nomenclatura de "colunaN" ao fornecer um nome de coluna, pois o nome que você fornece pode entrar em conflito com um nome de coluna padrão existente no 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.

Confira tambémSee also