一个DataTable包含由表的Columns属性引用的DataColumn对象集合。 此列集合以及任何约束定义表的架构或结构。
在表中创建DataColumnCollection对象可以通过使用DataColumn构造函数,或者通过调用表的Columns属性中的Add方法来实现。 该方法 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 时,该列的增量默认名称为列N(以“Column1”开头)。 建议在提供列名时避免“列N”的命名约定,因为提供的名称可能与 DataColumnCollection 中的现有默认列名冲突。 如果提供的名称已存在,则会引发异常。
如果在 XElement 中将 DataType 作为 DataColumn 的 DataTable 使用,当读取数据时,XML 序列化将不起作用。 例如,如果使用 XmlDocument 方法写出一个 DataTable.WriteXml,那么在序列化到 XML 时,会在 XElement 中生成一个附加的父节点。 若要解决此问题,请使用 SqlXml 类型而不是 XElement。
ReadXml 和 WriteXml 正常与 SqlXml 配合使用。