Agregar columnas a un objeto DataTable

DataTable contiene una colección de objetos de DataColumn a los que hace referencia la propiedad Columns de la tabla. Esta colección de columnas, junto con las restricciones que haya, define el esquema, o estructura, de la tabla.

Los objetos DataColumn de una tabla se crean con el constructor DataColumn o llamando al método Add de la propiedad Columns de la tabla, que es una DataColumnCollection. El método Add acepta argumentos ColumnName, DataType y Expression opcionales y crea una nueva DataColumn como miembro de la colección. También acepta un objeto DataColumn existente y lo agrega a la colección y devuelve una referencia al objeto DataColumn agregado si se solicita. Puesto que los objetos DataTable no son específicos de ningún origen de datos, al especificar el tipo de datos de DataColumn se usan los tipos de .NET Framework.

En el siguiente ejemplo, se agregan cuatro columnas 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));  

En el ejemplo, observe que las propiedades de la columna CustID se han configurado de manera que no admitan valores DBNull y restrinjan los valores para que sean únicos. Sin embargo, si se define la columna CustID como columna de clave principal de la tabla, la propiedad AllowDBNull se establecerá automáticamente en false y la propiedad Unique se establecerá automáticamente en true. Para más información, consulte Definir claves principales.

Precaución

Si no se proporciona un nombre para una determinada columna, ésta recibe el nombre predeterminado incremental ColumnN, (que empieza por "Column1"), cuando la columna se agrega a la colección DataColumnCollection. Se recomienda evitar la convención de nomenclatura "ColumnN" al proporcionar un nombre de columna, ya que el nombre que se proporcione podría entrar en conflicto con un nombre de columna predeterminado existente en DataColumnCollection. Si el nombre proporcionado ya existe, se inicia una excepción.

Si está utilizando XElement como DataType de una DataColumn en la DataTable, la serialización XML no funcionará cuando lea los datos. Por ejemplo, si escribe un XmlDocument utilizando el método DataTable.WriteXml, durante la serialización a XML hay un nodo primario adicional en el XElement. Para solucionar este problema, utilice el tipo SqlXml en lugar de XElement. ReadXml y WriteXml funcionan correctamente con SqlXml.

Consulte también