Ajout de colonnes à un DataTableAdding Columns to a DataTable

Un DataTable objet contient une collection DataColumn d’objets référencés par la propriété Columns de la table.A DataTable contains a collection of DataColumn objects referenced by the Columns property of the table. Cette collection de colonnes, ainsi que toute contrainte, définit le schéma, ou structure, de la table.This collection of columns, along with any constraints, defines the schema, or structure, of the table.

Vous créez des objets DataColumn dans une table en utilisant le constructeur DataColumn ou en appelant la méthode Add de la propriété Columns de la table, qui est DataColumnCollectionun.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. La méthode Add accepte les arguments facultatifs ColumnName, DataTypeet expression et crée un nouveau DataColumn en tant que membre de la collection.The Add method accepts optional ColumnName, DataType, and Expression arguments and creates a new DataColumn as a member of the collection. Il accepte également un objet DataColumn existant, l’ajoute à la collection et retourne une référence au DataColumn ajouté, le cas échéant.It also accepts an existing DataColumn object and adds it to the collection, and returns a reference to the added DataColumn if requested. Étant donné que les objets DataTable ne sont pas spécifiques à une source de données, les types .NET Framework sont utilisés lors de la spécification du type de données d’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.

L’exemple suivant ajoute quatre colonnes à 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));  

Dans l’exemple, remarquez que les propriétés de la colonne CustID sont définies de façon à ne pas autoriser les valeurs DBNull et à contraindre les valeurs à être uniques.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. Toutefois, si vous définissez la colonne CustID comme colonne de clé primaire de la table, la propriété AllowDBNull prend automatiquement la valeur false et la propriété unique prend automatiquement la valeur 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. Pour plus d’informations, consultez définition des clés primaires.For more information, see Defining Primary Keys.

Attention

Si un nom de colonne n’est pas fourni pour une colonne, la colonne reçoit un nom incrémentiel par défaut de colonneN, commençant par « Column1 », lorsqu’il est ajouté au 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. Nous vous recommandons d’éviter la Convention d’affectation de noms « columnN» lorsque vous fournissez un nom de colonne, car le nom que vous fournissez peut être en conflit avec un nom de colonne par défaut existant dans le 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 le nom fourni existe déjà, une exception est levée.If the supplied name already exists, an exception is thrown.

Si vous utilisez XElement en tant que DataType d'un DataColumn dans DataTable, la sérialisation XML ne fonctionnera pas lors de la lecture dans les données.If you are using XElement as the DataType of a DataColumn in the DataTable, XML serialization will not work when you read in data. Par exemple, si vous écrivez un XmlDocument à l'aide de la méthode DataTable.WriteXml, lors de la sérialisation vers XML, un nœud parent supplémentaire est ajouté dans le 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. Pour contourner ce problème, utilisez le type SqlXml à la place de XElement.To work around this problem, use the SqlXml type instead of XElement. ReadXml et WriteXml fonctionnent correctement avec SqlXml.ReadXml and WriteXml work correctly with SqlXml.

Voir aussiSee also