向数据表添加列

DataTable包含由表的DataColumn属性引用的对象集合。 此列集合以及任何约束定义表的架构或结构。

通过使用 DataColumn 构造函数,或者通过调用表的 Columns 属性的 Add 方法(它是一个 ),可在表内创建 DataColumn 对象DataColumnCollectionAdd 方法接受可选的 ColumnNameDataTypeExpression 参数,并创建新的 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 时,该列的增量默认名称为列N(以“Column1”开头)。 建议在提供列名时避免“列N”的命名约定,因为提供的名称可能与 DataColumnCollection 中的现有默认列名冲突。 如果提供的名称已存在,则会引发异常。

如果在 XElement 中将 DataType 作为 DataColumnDataTable 使用,当读取数据时,XML 序列化将不起作用。 例如,如果使用 XmlDocument 方法写出一个 DataTable.WriteXml,那么在序列化到 XML 时,会在 XElement 中生成一个附加的父节点。 若要解决此问题,请使用 SqlXml 类型而不是 XElementReadXmlWriteXml 正常与 SqlXml 配合使用。

另请参阅