Добавление столбцов в таблицу данныхAdding Columns to a DataTable

Объект DataTable содержитDataColumn коллекцию объектов, на которые ссылается свойство Columns таблицы.A DataTable contains a collection of DataColumn objects referenced by the Columns property of the table. Эта коллекция столбцов наряду с ограничениями определяет схему, или структуру, таблицы.This collection of columns, along with any constraints, defines the schema, or structure, of the table.

Объекты DataColumn создаются в таблице с помощью конструктора DataColumn или путем вызова метода Add свойства Columns таблицы, то есть 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. Метод Add принимает необязательные аргументы ColumnName, DataTypeи Expression и создает новый столбец данных в качестве члена коллекции.The Add method accepts optional ColumnName, DataType, and Expression arguments and creates a new DataColumn as a member of the collection. Он также принимает существующий объект DataColumn и добавляет его в коллекцию и возвращает ссылку на добавленный DataColumn-столбец по запросу.It also accepts an existing DataColumn object and adds it to the collection, and returns a reference to the added DataColumn if requested. Поскольку объекты DataTable не относятся к какому-либо источнику данных, .NET Framework типы используются при указании типа данных DataColumn.Because DataTable objects are not specific to any data source, .NET Framework types are used when specifying the data type of a DataColumn.

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

Обратите внимание, что в этом примере свойству для столбца CustID присвоено значение, которое не разрешает значения DBNull и ограничивает значения уникальными.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. Однако если определить столбец CustID в качестве первичного ключевого столбца таблицы, то свойству AllowDbNull автоматически будет присвоено значение false , а свойству UNIQUE будет автоматически присвоено значение 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. Дополнительные сведения см. в разделе Определение первичных ключей.For more information, see Defining Primary Keys.

Внимание!

Если имя столбца не указано для столбца, то столбцу присваивается добавочное имя по умолчанию для столбцаN, начинающееся с «Column1», при добавлении в датаколумнколлектион.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. Рекомендуется избегать использования соглашения об именовании "ColumnN" при указании имени столбца, так как указываемое имя может конфликтовать с существующим именем столбца по умолчанию в датаколумнколлектион.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. Если указанное имя уже существует, вызывается исключение.If the supplied name already exists, an exception is thrown.

Если элемент XElement используется в качестве DataType объекта DataColumn в DataTable, то XML-сериализация не будет работать при считывании данных.If you are using XElement as the DataType of a DataColumn in the DataTable, XML serialization will not work when you read in data. Например, если документ XmlDocument записывается методом DataTable.WriteXml, то во время сериализации в XML-код создается дополнительный родительский узел в элементе 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. Чтобы избежать этой проблемы, используйте тип SqlXml вместо XElement.To work around this problem, use the SqlXml type instead of XElement. Методы ReadXml и WriteXml правильно работают с SqlXml.ReadXml and WriteXml work correctly with SqlXml.

См. такжеSee also