Agregar columnas a un objeto DataTableAdding Columns to a DataTable

Un DataTable contiene una colección de DataColumn objetos al que hace referencia el columnas propiedad 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.

Crear DataColumn objetos dentro de una tabla mediante el uso de la DataColumn constructor, o mediante una llamada a la agregar método de la columnaspropiedad de la tabla, que es un 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 agregar método acepta opcional ColumnName, DataType, y expresión argumentos y crea un nuevo DataColumn como un 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 una existente DataColumn objeto y lo agrega a la colección y devuelve una referencia al agregado DataColumn 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 DataTable objetos no son específicos para cualquier origen de datos, tipos de .NET Framework se usan cuando se especifica el tipo de datos de un DataColumn.Because DataTable objects are not specific to any data source, .NET Framework types are used when specifying the data type of a DataColumn.

El ejemplo siguiente agrega cuatro columnas a un 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, tenga en cuenta que las propiedades de la CustID columna está establecida para no permitir DBNull valores y para restringir los valores 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 CustID columna como columna de clave principal de la tabla, el AllowDBNull propiedad se establecerá automáticamente en false y el Unique propiedad 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, consulte definir claves principales.For more information, see Defining Primary Keys.

Precaución

Si no se proporciona un nombre de columna para una columna, la columna tiene un nombre predeterminado incremental de la columnaN, empieza 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 "columnaN" al proporcionar un nombre de columna, porque el nombre que se proporcione podría entrar en conflicto con un nombre de columna predeterminado existente en el 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.

Vea tambiénSee also