日期:2012-03-16  浏览次数:20449 次

DataColumn构造

n Public Sub New()’ 刚创建时,新的 DataColumn 对象没有默认的 ColumnName 或 Caption 属性。但是,在添加到 DataColumnCollection 时,就给予列默认名称(“Column1”、“Column2”等等)。

n Public Sub New(ByVal columnName As String)

n Public Sub New(ByVal columnName As String,ByVal dataType As Type)

n Public Sub New(ByVal columnName As String,ByVal dataType As Type,ByVal expr As String)

n Public Sub New(ByVal columnName As String,ByVal dataType As Type,ByVal expr As String,ByVal type As MappingType)

参数

1. columnName 一个字符串,它表示要创建的列的名称。如果设置为空引用(Visual Basic 中为 Nothing)或空字符串 (""),则当添加到列集合中时,将提供一个默认名称。

2. dataType 支持的 DataType。

3. expr 用于创建该列的表达式。

4. type MappingType 值之一。指定如何映射 DataColumn。在获取或设置 DataColumn 的 ColumnMapping 属性时,使用 MappingType 枚举。在 DataSet 上调用 WriteXml 方法以将数据和架构作为 XML 文档写出时,该属性确定如何写列的值。

成员名称
说明

Attribute
将列映射到 XML 属性。

Element
将列映射到 XML 元素。

Hidden
将列映射到内部结构。

SimpleContent
将列映射到 XmlText 节点。



DataColumn 是用于创建 DataTable 的架构的基本构造块。通过向 DataColumnCollection 中添加一个或多个 DataColumn 对象来生成这个架构。

每个 DataColumn 都有 DataType 属性,该属性确定 DataColumn 所包含的数据的种类。例如,可以将数据类型限制为整数、字符串或小数。由于 DataTable 所包含的数据通常合并回其原始数据源,因此必须使数据类型与数据源中的数据类型匹配。

诸如 AllowDBNull、Unique 和 ReadOnly 之类的属性对数据的输入和更新施加限制,从而有助于确保数据完整性。还可以使用 AutoIncrement、AutoIncrementSeed 和 AutoIncrementStep 属性来控制数据自动生成。

还可以通过创建 UniqueConstraint 并将其添加到 DataColumn 所属的 DataTable 的 ConstraintCollection,以确保 DataColumn 中的值是唯一的。

若要创建 DataColumn 对象之间的关系,请创建 DataRelation 对象并将其添加到 DataSet 的 DataRelationCollection。

可以使用 DataColumn 对象的 Expression 属性来计算列中的值或创建聚合列。

示例
Private Sub CreateComputedColumn(ByVal myTable As DataTable)

Dim myTable As DataTable = new DataTable("myTable")
Dim myColumn As DataColumn

Dim dt As System.Type

Dim strExpr As String

myColumn = New DataColumn("id")

With myColumn

.DataType = System.Type.GetType("System.Int32")

.AutoIncrement = True

.AutoIncrementSeed = 1

.AutoIncrementStep = 1

.ReadOnly = True

End With

myTable.Columns.Add(myColumn)



dt = System.Type.GetType("System.Int32")

myColumn = New DataColumn("Quantity", dt)

With myColumn

.AllowDBNull = False

End With

myTable.Columns.Add(myColumn)



myColumn = New DataColumn
myColumn.DataType = System.Type.GetType("System.Decimal")
myColumn.AllowDBNull = False
myColumn.Caption = "Price"
myColumn.ColumnName = "Price"
myColumn.DefaultValue = 25
myTable.Columns.Add(myColumn)


dt = System.Type.GetType("System.Decimal")

myColumn = New DataColumn("Tax", dt, "Price * .0862")

With myColumn

.AutoIncrement = False

.ReadOnly = True

End With

myTable.Columns.Add(myColumn)



dt = System.Type.GetType("System.Decimal")

strExpr = "Price * Quantity"

' Create the column, setting the type to Attribute.

myColumn = New DataColumn("Total", dt, strExpr, MappingType.Attribute)

myColumn.AutoIncrement = False

myColumn.ReadOnly = True

myTable.Columns.Add(myColumn)

End Sub