將資料行加入至 DataTable
DataTable 包含資料表 Columns 屬性所參考 DataColumn 物件的集合。 這個資料行集合 (可搭配任何條件約束) 可定義資料表的結構描述 (或結構)。
您可以使用 DataColumn 建構函式,或是呼叫資料表 (其為 DataColumnCollection) Columns 屬性的 Add 方法,在資料表內建立 DataColumn 物件。 Add 方法可接受可選用的 ColumnName、DataType 與 Expression 引數,並建立新的 DataColumn 作為集合成員。 它也可接受現有的 DataColumn 物件,並將它加入集合中,然後應要求傳回加入之 DataColumn 的參考。 由於 DataTable 物件並非特定用於任何資料來源,因此指定 DataColumn 資料型別時將使用 .NET Framework 型別。
下列範例將四個資料行加入 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));
請注意,在本範例中,CustID 資料行的屬性已設為不得使用 DBNull 值,並且已將值限制為唯一值。 但如果您將 CustID 資料行定義為資料表的主索引鍵資料行,AllowDBNull 屬性將自動設為 false,而 Unique 屬性將自動設為 true。 如需詳細資訊,請參閱定義主索引鍵。
警告
若未提供資料行名稱給資料行,則在資料行加入 DataColumnCollection 時,就會指定 ColumnN 的累加預設名稱給資料行,從 Column1 開始。 當提供資料行名稱時,建議您避免使用「ColumnN」 的命名規則,因為您提供的名稱可能會與 DataColumnCollection 現有的預設資料行名稱衝突。 如果提供的名稱已經存在,便會發生例外狀況。
如果您要使用 XElement 當做 DataType 中 DataColumn 的 DataTable,當您讀入資料時,XML 序列化將無法運作。 例如,如果您使用 XmlDocument 方法來寫出 DataTable.WriteXml
,在序列化至 XML 時,XElement 就會存在額外的父節點。 若要解決此問題,請使用 SqlXml 型別而非 XElement。 ReadXml
和 WriteXml
會搭配 SqlXml 正確運作。