向数据表添加列

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

在表中创建DataColumnCollection对象可以通过使用DataColumn构造函数,或者通过调用表的Columns属性中的Add方法来实现。 该方法 Add 接受可选的 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 配合使用。

另请参阅