Compartir a través de


Agregar columnas a una tabla de datos

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 cualquier restricción, define el esquema o la estructura de la tabla.

Los objetos DataColumn se crean dentro de una tabla mediante el constructor DataColumn o llamando al método Add de la propiedad Columns de la tabla, que es .DataColumnCollection El método Add acepta argumentos opcionales ColumnName, DataType y Expression y crea un nuevo 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. Dado que los objetos DataTable no son específicos de ningún origen de datos, se usan tipos de .NET Framework al especificar el tipo de datos de una clase DataColumn.

En el ejemplo siguiente se agregan cuatro columnas a una 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 están establecidas para no permitir valores DBNull y para asegurar que los valores sean únicos. Sin embargo, si 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 de columna para una columna, la columna recibe un nombre predeterminado incremental de la columnaN, empezando por "Column1", cuando se agrega a DataColumnCollection. Se recomienda evitar la convención de nomenclatura de "ColumnaN" al proporcionar un nombre de columna, ya que el nombre que proporcione puede entrar en conflicto con un nombre de columna predeterminado existente en DataColumnCollection. Si el nombre proporcionado ya existe, se produce 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 mediante el método DataTable.WriteXml, tras la serialización a XML hay un nodo primario adicional en el XElement. Para solucionar este problema, use el SqlXml tipo en lugar de XElement. ReadXml y WriteXml funcionan correctamente con SqlXml.

Consulte también