Ajout de colonnes à un DataTable

Un objet DataTable contient une collection d’objets DataColumn référencés par la propriété Columns de la table. Cette collection de colonnes, ainsi que toute contrainte, définit le schéma, ou structure, de la table.

Vous pouvez créer 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 un objet DataColumnCollection. La méthode Add accepte des arguments facultatifs ColumnName, DataType et Expression et crée un nouveau DataColumn en tant que membre de la collection. Elle accepte également un objet DataColumn existant, l’ajoute à la collection et retourne une référence au DataColumn ajouté, si nécessaire. Étant donné que les objets DataTable ne sont spécifiques à aucune source de données, les types .NET Framework sont utilisés lors de la spécification du type de données d’un DataColumn.

L’exemple suivant ajoute quatre colonnes à un 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 cet exemple, remarquez que les propriétés de la colonne CustID sont définies de façon à ne pas accepter de valeurs DBNull et à limiter les valeurs à des valeurs uniques. Cependant, si vous définissez la colonne CustID comme colonne de clé primaire de la table, la propriété AllowDBNull prendra automatiquement la valeur false et la propriété Unique la valeur true. Pour plus d’informations, consultez Définition des clés primaires.

Attention

Si aucun nom n’est fourni pour une colonne, un nom incrémentiel par défaut de ColumnN, à partir de « Column1 », est attribué à cette colonne lors de son ajout au DataColumnCollection. Il est recommandé d’éviter d’utiliser la convention de dénomination « ColumnN » lorsque vous fournissez un nom de colonne car le nom fourni peut entrer en conflit avec un nom de colonne par défaut existant du DataColumnCollection. Si le nom fourni existe déjà, une exception est levée.

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. 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. Pour contourner ce problème, utilisez le type SqlXml à la place de XElement. ReadXml et WriteXml fonctionnent correctement avec SqlXml.

Voir aussi