Agregar columnas a un objeto DataTableAdding Columns to a DataTable

Un DataTable objeto contiene una colección de DataColumn objetos a los que hace referencia la propiedad Columns de la tabla.A DataTable contains a collection of DataColumn objects referenced by the Columns property of the table. Esta colección de columnas, junto con las restricciones que haya, define el esquema, o estructura, de la tabla.This collection of columns, along with any constraints, defines the schema, or structure, of the table.

Puede crear objetos DataColumn dentro de una tabla mediante el constructor DataColumn o llamando al método Add de la propiedad Columns de la tabla, que es 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. El método Add acepta argumentos columnName, DataTypey Expression opcionales y crea una nueva DataColumn como miembro de la colección.The Add method accepts optional ColumnName, DataType, and Expression arguments and creates a new DataColumn as a member of the collection. También acepta un objeto DataColumn existente y lo agrega a la colección y devuelve una referencia a la DataColumn agregada si se solicita.It also accepts an existing DataColumn object and adds it to the collection, and returns a reference to the added DataColumn if requested. Dado que los objetos DataTable no son específicos de ningún origen de datos, se usan .NET Framework tipos al especificar el tipo de datos de un objeto DataColumn.Because DataTable objects are not specific to any data source, .NET Framework types are used when specifying the data type of a DataColumn.

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

En el ejemplo, observe que las propiedades de la columna CustID están configuradas para no permitir valores DBNull y para restringir los valores de forma que sean únicos.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. 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.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 obtener más información, vea definir claves principales.For more information, see Defining Primary Keys.

Precaución

Si no se proporciona un nombre de columna para una columna, a la columna se le asigna un nombre predeterminado incremental de la columnaN, empezando por "Column1", cuando se agrega a la 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. Se recomienda evitar la Convención de nomenclatura de "ColumnN" al proporcionar un nombre de columna, porque el nombre proporcionado puede entrar en conflicto con un nombre de columna predeterminado existente en 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. Si el nombre proporcionado ya existe, se inicia una excepción.If the supplied name already exists, an exception is thrown.

Si está utilizando XElement como DataType de una DataColumn en la DataTable, la serialización XML no funcionará cuando lea los datos.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 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.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 solucionar este problema, utilice el tipo SqlXml en lugar de XElement.To work around this problem, use the SqlXml type instead of XElement. ReadXml y WriteXml funcionan correctamente con SqlXml.ReadXml and WriteXml work correctly with SqlXml.

Consulte tambiénSee also