DataTable包含由表的DataColumn属性引用的对象集合。 此列集合以及任何约束定义表的架构或结构。
通过使用 DataColumn 构造函数,或者通过调用表的 Columns 属性的 Add 方法(它是一个 ),可在表内创建 DataColumn 对象DataColumnCollection。 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 配合使用。