Partager via


Ajout de colonnes à un DataTable

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 toutes les contraintes, définit le schéma ou la structure de la table.

Vous créez DataColumn des objets dans une table avec le constructeur DataColumn ou en appelant la méthode Add de la propriété Columns de la table, qui est une DataColumnCollection. La méthode Add accepte les arguments facultatifs ColumnName, DataType, et Expression, et crée un nouvel élément DataColumn en tant que membre de la collection. Il accepte également un objet existant DataColumn et l’ajoute à la collection et retourne une référence à l’objet ajouté DataColumn si demandé. Étant donné que DataTable les objets 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.

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 l’exemple, notez que les propriétés de la colonne CustID sont définies pour ne pas autoriser les valeurs DBNull et que les valeurs doivent être uniques. Toutefois, si vous définissez la CustID colonne comme colonne clé primaire de la table, la AllowDBNull propriété est automatiquement définie et la false propriété est automatiquement définie Unique sur true. Pour plus d’informations, consultez Définition des clés primaires.

Avertissement

Si un nom de colonne n’est pas fourni pour une colonne, la colonne reçoit un nom par défaut incrémentiel de colonneN, en commençant par « Column1 », lorsqu’elle est ajoutée à DataColumnCollection. Nous vous recommandons d’éviter la convention d’affectation de noms de « ColonneN » lorsque vous fournissez un nom de colonne, car le nom que vous fournissez peut entrer en conflit avec un nom de colonne par défaut existant dans DataColumnCollection. Si le nom fourni existe déjà, une exception est levée.

Si vous utilisez XElement comme DataType d'un DataColumn dans DataTable, la sérialisation XML ne fonctionnera pas lorsque vous lirez les données. Par exemple, si vous écrivez un XmlDocument en utilisant la méthode DataTable.WriteXml, lors de la sérialisation au format XML, il existe un nœud parent supplémentaire dans le XElement. Pour contourner ce problème, utilisez le SqlXml type au lieu de XElement. ReadXml et WriteXml fonctionne correctement avec SqlXml.

Voir aussi