Compartilhar via


Adicionando colunas a uma DataTable

Um DataTable contém uma coleção de DataColumn objetos referenciados pela Columns propriedade da tabela. Essa coleção de colunas, juntamente com quaisquer restrições, define o esquema ou a estrutura da tabela.

Você cria DataColumn objetos dentro de uma tabela usando o DataColumn construtor ou chamando o método Add da propriedade Columns da tabela, que é um DataColumnCollection. O Add método aceita ColumnName, DataType e Expression argumentos opcionais e cria um novo DataColumn como membro da coleção. Ele também aceita um objeto existente DataColumn e o adiciona à coleção e retorna uma referência ao adicionado DataColumn , se solicitado. Como DataTable os objetos não são específicos para nenhuma fonte de dados, os tipos do .NET Framework são usados ao especificar o tipo de dados de um DataColumn.

O exemplo a seguir adiciona quatro colunas a uma 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 são definidas para não permitir valores DBNull e restringir valores para serem exclusivos. No entanto, se você definir a CustID coluna como a coluna de chave primária da tabela, a AllowDBNull propriedade será definida false automaticamente e a Unique propriedade será definida automaticamente como true. Para obter mais informações, consulte Definir Chaves Primárias.

Cuidado

Se um nome de coluna não for fornecido para uma coluna, a coluna recebe um nome padrão incremental da ColunaN, começando com "Column1", quando é adicionada ao DataColumnCollection. Recomendamos evitar a convenção de nomenclatura de "ColunaN" ao fornecer um nome de coluna, pois o nome fornecido pode entrar em conflito com um nome de coluna padrão existente no DataColumnCollection. Se o nome fornecido já existir, uma exceção será gerada.

Se você estiver usando XElement como DataType de um DataColumn no DataTable, a serialização XML não funcionará quando você ler dados. 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. Para contornar esse problema, use o SqlXml tipo em vez de XElement. ReadXml e WriteXml trabalhe corretamente com SqlXml.

Consulte também