Dodawanie kolumn do elementu DataTableAdding Columns to a DataTable

A DataTable zawieraDataColumn kolekcję obiektów, do których odwołuje się Właściwość kolumn tabeli.A DataTable contains a collection of DataColumn objects referenced by the Columns property of the table. Ta kolekcja kolumn, wraz z wszelkimi ograniczeniami, definiuje schemat, czyli strukturę tabeli.This collection of columns, along with any constraints, defines the schema, or structure, of the table.

Tworzysz obiekty DataColumn w tabeli przy użyciu konstruktora DataColumn lub wywołując metodę Add właściwości Columns tabeli, która jest 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. Metoda Add akceptuje opcjonalne argumenty ColumnName, DataTypei Expression i tworzy nową kolumnę DataColumn jako element członkowski kolekcji.The Add method accepts optional ColumnName, DataType, and Expression arguments and creates a new DataColumn as a member of the collection. Akceptuje również istniejący obiekt DataColumn i dodaje go do kolekcji i zwraca odwołanie do dodanej kolumny , jeśli jest to wymagane.It also accepts an existing DataColumn object and adds it to the collection, and returns a reference to the added DataColumn if requested. Ponieważ obiekty DataTable nie są specyficzne dla żadnego źródła danych, typy .NET Framework są używane podczas określania typu danych w kolumnie DataColumn.Because DataTable objects are not specific to any data source, .NET Framework types are used when specifying the data type of a DataColumn.

Poniższy przykład dodaje cztery kolumny do elementu 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));  

W przykładzie należy zauważyć, że właściwości kolumny CustId są ustawione tak, aby nie zezwalały na wartości DBNull i ograniczać wartości jako unikatowe.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. Jednak w przypadku zdefiniowania kolumny CustId jako kolumny klucza podstawowego tabeli Właściwość AllowDBNull zostanie automatycznie ustawiona na wartość false , a właściwość Unique zostanie automatycznie ustawiona na wartość 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. Aby uzyskać więcej informacji, zobacz Definiowanie kluczy podstawowych.For more information, see Defining Primary Keys.

Przestroga

Jeśli nie podano nazwy kolumny dla kolumny, kolumna otrzymuje przyrostową domyślną nazwę kolumnyN, rozpoczynając od "Kolumna1", gdy zostanie dodana do elementu 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. Zalecamy uniknięcie konwencji nazewnictwa "ColumnN" w przypadku podania nazwy kolumny, ponieważ dostarczona nazwa może powodować konflikt z istniejącą domyślną nazwą kolumny w elemencie 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. Jeśli podana nazwa już istnieje, zgłaszany jest wyjątek.If the supplied name already exists, an exception is thrown.

Jeśli używasz XElement programu DataType jako DataColumn elementu wDataTable, serializacja XML nie będzie działała podczas odczytywania danych.If you are using XElement as the DataType of a DataColumn in the DataTable, XML serialization will not work when you read in data. Na przykład jeśli piszesz a XmlDocument przy DataTable.WriteXml użyciu metody, po serializacji do kodu XML istnieje XElementdodatkowy węzeł nadrzędny w obiekcie.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. Aby obejść ten problem, użyj SqlXml typu XElementzamiast.To work around this problem, use the SqlXml type instead of XElement. ReadXmli WriteXml działają poprawnie z SqlXml.ReadXml and WriteXml work correctly with SqlXml.

Zobacz takżeSee also