向数据表添加列
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 中的 DataColumn 的 DataTable,则在读入数据时,XML 序列化将不起作用。 例如,如果通过使用 XmlDocument 方法来写出 DataTable.WriteXml
,则在序列化为 XML 时,XElement 中会出现一个额外的父节点。 若要解决此问题,请使用 SqlXml 类型来代替 XElement。 ReadXml
和 WriteXml
对 SqlXml 均能正确使用。