Udostępnij za pomocą


Dodawanie kolumn do tabeli DataTable

Obiekt DataTable zawiera kolekcję DataColumn obiektów, do których odwołuje się Columns właściwość tabeli. Ta kolekcja kolumn wraz z wszelkimi ograniczeniami definiuje schemat lub strukturę tabeli.

Obiekty DataColumn tworzy się w tabeli za pomocą konstruktora DataColumn lub przez wywołanie metody Add właściwości Columns tabeli, która jest DataColumnCollection. Metoda Add akceptuje opcjonalne argumenty ColumnName, DataType i Expression tworzy nowe DataColumn jako element członkowski kolekcji. Akceptuje również istniejący DataColumn obiekt i dodaje go do kolekcji i zwraca odwołanie do dodanego DataColumn , jeśli jest to wymagane. Ponieważ DataTable obiekty nie są specyficzne dla żadnego źródła danych, typy programu .NET Framework są używane podczas określania typu danych kolumny DataColumn.

Poniższy przykład dodaje cztery kolumny do tabeli 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 tym przykładzie zwróć uwagę, że właściwości CustID kolumny są ustawione tak, aby nie zezwalały na wartości DBNull i ograniczały wartości do unikalnych. Jeśli jednak zdefiniujesz kolumnę CustID jako kolumnę klucza podstawowego tabeli, AllowDBNull właściwość zostanie automatycznie ustawiona na false , a Unique właściwość zostanie automatycznie ustawiona na true. Aby uzyskać więcej informacji, zobacz Definiowanie kluczy podstawowych.

Ostrzeżenie

Jeśli nazwa kolumny nie jest podana dla kolumny, kolumna otrzymuje przyrostową domyślną nazwę kolumnyN, zaczynając od kolumny "Column1", po dodaniu jej do kolekcji DataColumnCollection. Zalecamy unikanie konwencji nazewnictwa kolumnyN podczas podawania nazwy kolumny, ponieważ podana nazwa może powodować konflikt z istniejącą domyślną nazwą kolumny w kolekcji DataColumnCollection. Jeśli podana nazwa już istnieje, zostanie zgłoszony wyjątek.

Jeśli używasz XElement jako DataTypeDataColumn w DataTable, serializacja XML nie będzie działać przy wczytywaniu danych. Na przykład, jeśli zapiszesz XmlDocument przy użyciu metody DataTable.WriteXml, po serializacji do XML jest dodatkowy węzeł nadrzędny w XElement. Aby obejść ten problem, użyj SqlXml typu zamiast XElement. ReadXml i WriteXml działa poprawnie z SqlXml.

Zobacz także