Hinzufügen von Spalten zu einer "DataTable"

Eine DataTable enthält eine Auflistung von DataColumn-Objekten, auf die von der Columns-Eigenschaft der Tabelle verwiesen wird. Diese Auflistung von Spalten, zusammen mit allen Einschränkungen, definiert das Schema oder die Struktur der Tabelle.

DataColumn-Objekte werden innerhalb einer Tabelle mit dem DataColumn-Konstruktor oder durch Aufrufen der Add-Methode der Columns-Eigenschaft der Tabelle erstellt, die eine DataColumnCollection ist. Die Add-Methode akzeptiert optional die Argumente ColumnName, DataType und Expression und erstellt eine neue DataColumn als einen Member der Auflistung. Außerdem akzeptiert die Methode ein vorhandenes DataColumn-Objekt, fügt es der Auflistung hinzu und gibt einen Verweis auf die hinzugefügte DataColumn zurück, wenn dieser angefordert wird. Da DataTable-Objekte nicht für eine Datenquelle spezifisch sind, werden .NET Framework-Typen zum Angeben des Datentyps einer DataColumn verwendet.

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 Spalte CustID darauf festgelegt sind, DBNull-Werte nicht zuzulassen, und Werte darauf einzuschränken, eindeutig zu sein. Wenn Sie jedoch die Spalte CustID als die 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 Löschen von Primärschlüsseln.

Achtung

Wenn für eine Spalte kein Spaltenname angegeben wird, erhält die Spalte den Standardnamen „ColumnN“, beginnend mit „Column1“, der jeweils um eins erhöht wird, wenn sie der DataColumnCollection hinzugefügt wird. Es wird davon abgeraten, die Benennungskonvention „ColumnN“ zum Benennen einer Spalte zu verwenden, wenn Sie einen Spaltennamen bereitstellen, da der Name u. U. zu einem Konflikt mit einem bereits vorhandenen Standardspaltennamen in der DataColumnCollection führt. Wenn der angegebene Name bereits vorhanden ist, wird eine Ausnahme ausgelöst.

Wenn Sie das XElement-Element als DataType einer DataColumn in der DataTable verwenden, funktioniert die XML-Serialisierung beim Einlesen von Daten nicht. 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. Um dieses Problem zu umgehen, verwenden Sie den SqlXml-Typ statt des XElement-Elements. ReadXml und WriteXml funktionieren mit SqlXml ordnungsgemäß.

Siehe auch