Поделиться через


Добавление столбцов в таблицу данных

A DataTable содержит коллекцию DataColumn объектов, на которые ссылается свойство Columns таблицы. Эта коллекция столбцов наряду с ограничениями определяет схему, или структуру, таблицы.

Объекты DataColumn в таблице создаются с помощью конструктора DataColumn или путем вызова метода Add свойства Column таблицы, который является .DataColumnCollection Метод Add принимает необязательные аргументы ColumnName, DataType и Expression и создает новый DataColumn в качестве члена коллекции. Он также принимает существующий объект DataColumn и добавляет его в коллекцию и возвращает ссылку на добавленный DataColumn при запросе. Так как объекты DataTable не относятся к любому источнику данных, платформа .NET Framework типы используются при указании типа данных DataColumn.

В следующем примере в 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));  

В примере обратите внимание, что свойства столбца CustID не позволяют значения DBNull и ограничивать значения уникальными. Однако если вы определяете столбец CustID в качестве первичного ключевого столбца таблицы, свойство AllowDBNull автоматически будет иметь значение false, а свойство Unique автоматически будет иметь значение true. Дополнительные сведения см. в разделе "Определение первичных ключей".

Внимание

Если имя столбца не указано для столбца, столбец получает добавочное имя по умолчанию столбцаN, начиная с "Column1", когда он добавляется в DataColumnCollection. Рекомендуется избегать соглашения об именовании столбца "СтолбецN" при предоставлении имени столбца, так как указанное имя может конфликтовать с существующим именем столбца по умолчанию в DataColumnCollection. Если указанное имя уже существует, вызывается исключение.

Если элемент XElement используется в качестве DataType объекта DataColumn в DataTable, то XML-сериализация не будет работать при считывании данных. Например, если документ XmlDocument записывается методом DataTable.WriteXml, то во время сериализации в XML-код создается дополнительный родительский узел в элементе XElement. Чтобы избежать этой проблемы, используйте тип SqlXml вместо XElement. Методы ReadXml и WriteXml правильно работают с SqlXml.

См. также