Freigeben über


Hinzufügen von Spalten zu einer DataTable

A DataTable enthält eine Auflistung von DataColumn Objekten, auf die von der Columns -Eigenschaft der Tabelle verwiesen wird. Diese Sammlung von Spalten sowie alle Einschränkungen definiert das Schema oder die Struktur der Tabelle.

Sie erstellen DataColumn-Objekte in einer Tabelle mithilfe des DataColumn-Konstruktors oder durch Aufrufen der Add-Methode der Columns-Eigenschaft der Tabelle, die ein DataColumnCollection. Die Add-Methode akzeptiert optionale ColumnName-, DataType- und Expression-Argumente und erstellt ein neues DataColumn als Element der Auflistung. Es akzeptiert auch ein vorhandenes DataColumn-Objekt und fügt es der Auflistung hinzu und gibt einen Verweis auf das hinzugefügte DataColumn zurück, falls angefordert. Da DataTable-Objekte für keine Datenquelle spezifisch sind, werden .NET Framework-Typen verwendet, wenn sie den Datentyp eines DataColumn angeben.

Im folgenden Beispiel werden einer DataTable vier Spalten hinzugefügt.

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 eindeutig sind. Wenn Sie jedoch die CustID-Spalte als Primärschlüsselspalte der Tabelle definieren, wird die AllowDBNull-Eigenschaft automatisch auf "false" festgelegt, und die Unique-Eigenschaft wird automatisch auf "true" festgelegt. Weitere Informationen finden Sie unter Definieren von Primärschlüsseln.

Vorsicht

Wenn kein Spaltenname für eine Spalte angegeben wird, erhält die Spalte einen inkrementellen Standardnamen von SpalteN, beginnend mit "Spalte1", wenn sie der DataColumnCollection hinzugefügt wird. Es wird empfohlen, die Benennungskonvention von "ColumnN" beim Angeben eines Spaltennamens zu vermeiden, da der angegebene Name möglicherweise mit einem vorhandenen Standardspaltennamen in der DataColumnCollection in Konflikt steht. Wenn der angegebene Name bereits vorhanden ist, wird eine Ausnahme ausgelöst.

Wenn Sie XElement als DataType von DataColumn im DataTable verwenden, wird die XML-Serialisierung nicht funktionieren, wenn Sie Daten einlesen. Wenn Sie z. B. eine XmlDocument mithilfe der DataTable.WriteXml-Methode schreiben, gibt es bei der Serialisierung nach XML einen zusätzlichen übergeordneten Knoten in der XElement. Um dieses Problem zu umgehen, verwenden Sie den SqlXml Typ anstelle von XElement. ReadXml und WriteXml arbeiten ordnungsgemäß mit SqlXml.

Siehe auch