Hinzufügen von Spalten zu einer "DataTable"Adding Columns to a DataTable

Eine DataTable enthält eine Auflistung von DataColumn -Objekten, auf die von der Columns -Eigenschaft der Tabelle verwiesen wird.A DataTable contains a collection of DataColumn objects referenced by the Columns property of the table. Diese Auflistung von Spalten, zusammen mit allen Einschränkungen, definiert das Schema oder die Struktur der Tabelle.This collection of columns, along with any constraints, defines the schema, or structure, of the table.

Sie erstellen datacolenn -Objekte innerhalb einer Tabelle mithilfe des datacolumschlag -Konstruktors oder durch Aufrufen der Add -Methode der Columns -Eigenschaft der Tabelle, bei der es sich DataColumnCollectionum eine handelt.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. Die Add -Methode akzeptiert optionale ColumnName-, DataType-und Expression -Argumente und erstellt eine neue datacolenn als Member der Auflistung.The Add method accepts optional ColumnName, DataType, and Expression arguments and creates a new DataColumn as a member of the collection. Außerdem akzeptiert Sie ein vorhandenes datacolenumn -Objekt und fügt es der Collection hinzu und gibt bei Bedarf einen Verweis auf die hinzugefügte datacolenn zurück.It also accepts an existing DataColumn object and adds it to the collection, and returns a reference to the added DataColumn if requested. Da Daten Tabelle nicht spezifisch für Datenquellen ist, werden .NET Framework Typen beim Angeben des Datentyps einer datacolenumnverwendet.Because DataTable objects are not specific to any data source, .NET Framework types are used when specifying the data type of a DataColumn.

Im folgenden Beispiel werden vier Spalten zu einer DatenTabelle hinzugefügt.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));  

Beachten Sie im Beispiel, dass die Eigenschaften für die CustId- Spalte so festgelegt sind, dass DBNull -Werte nicht zulässig sind, und dass die Werte als eindeutig festgelegt werden.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. Wenn Sie die CustId- Spalte jedoch als Primärschlüssel Spalte der Tabelle definieren, wird die AllowDBNull -Eigenschaft automatisch auf false festgelegt, und die Unique -Eigenschaft wird automatisch auf truefestgelegt.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. Weitere Informationen finden Sie unter Definieren von primär Schlüsseln.For more information, see Defining Primary Keys.

Achtung

Wenn für eine Spalte kein Spaltenname angegeben wird, erhält die Spalte einen inkrementellen Standardnamen von SpalteN, beginnend mit "Column1", wenn Sie der datacolenncollectionhinzugefügt wird.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. Es wird empfohlen, dass Sie die Benennungs Konvention "ColumnN" vermeiden, wenn Sie einen Spaltennamen angeben, da der von Ihnen bereitgestellte Name möglicherweise mit einem vorhandenen Standard Spaltennamen in der datacolenncollectionin Konflikt steht.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. Wenn der angegebene Name bereits vorhanden ist, wird eine Ausnahme ausgelöst.If the supplied name already exists, an exception is thrown.

Wenn Sie das XElement-Element als DataType einer DataColumn in der DataTable verwenden, funktioniert die XML-Serialisierung beim Einlesen von Daten nicht.If you are using XElement as the DataType of a DataColumn in the DataTable, XML serialization will not work when you read in data. Wenn Sie beispielsweise ein XmlDocument mit der DataTable.WriteXml-Methode schreiben, wird bei der Serialisierung in XML ein zusätzlicher übergeordneter Knoten im XElement-Element hinzugefügt.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. Um dieses Problem zu umgehen, verwenden Sie den SqlXml-Typ statt des XElement-Elements.To work around this problem, use the SqlXml type instead of XElement. ReadXml und WriteXml funktionieren mit SqlXml ordnungsgemäß.ReadXml and WriteXml work correctly with SqlXml.

Siehe auchSee also