向数据表添加列

DataTable 包含了由表的 Columns 属性引用的 DataColumn 对象的集合。 这个列的集合与任何约束一起定义表的架构(即结构)。

通过使用 DataColumn 构造函数,或者通过调用表的 Columns 属性的 Add 方法(它是一个 DataColumnCollection),可在表内创建 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 时,该列会得到从“Column1”开始递增的默认名称 ColumnN。 建议在提供列名时避免使用“ColumnN”命名约定,因为那样提供的名称可能与 DataColumnCollection 中现有的默认列名冲突。 如果提供的名称已经存在,将引发异常。

如果将 XElement 用作 DataType 中的 DataColumnDataTable,则在读入数据时,XML 序列化将不起作用。 例如,如果通过使用 XmlDocument 方法来写出 DataTable.WriteXml,则在序列化为 XML 时,XElement 中会出现一个额外的父节点。 若要解决此问题,请使用 SqlXml 类型来代替 XElementReadXmlWriteXmlSqlXml 均能正确使用。

请参阅