.NET Framework 类库
DataTable 类

表示一个内存中数据表。

继承层次结构

System..::.Object
  System.ComponentModel..::.MarshalByValueComponent
    System.Data..::.DataTable
      System.Data..::.TypedTableBase<(Of <(T>)>)

命名空间:  System.Data
程序集:  System.Data(在 System.Data.dll 中)
语法

Visual Basic
<SerializableAttribute> _
Public Class DataTable _
    Inherits MarshalByValueComponent _
    Implements IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable,  _
    IXmlSerializable
C#
[SerializableAttribute]
public class DataTable : MarshalByValueComponent, IListSource, 
    ISupportInitializeNotification, ISupportInitialize, ISerializable, IXmlSerializable
Visual C++
[SerializableAttribute]
public ref class DataTable : public MarshalByValueComponent, 
    IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, IXmlSerializable
F#
[<SerializableAttribute>]
type DataTable =  
    class
        inherit MarshalByValueComponent
        interface IListSource
        interface ISupportInitializeNotification
        interface ISupportInitialize
        interface ISerializable
        interface IXmlSerializable
    end

DataTable 类型公开以下成员。

构造函数

  名称说明
公共方法由 XNA Framework 提供支持DataTable()()()不带参数初始化 DataTable 类的新实例。
公共方法由 XNA Framework 提供支持DataTable(String)用指定的表名初始化 DataTable 类的新实例。
受保护的方法DataTable(SerializationInfo, StreamingContext)使用 SerializationInfoStreamingContext 初始化 DataTable 类的新实例。
公共方法由 XNA Framework 提供支持DataTable(String, String)用指定的表名和命名空间初始化 DataTable 类的新实例。
页首
属性

  名称说明
公共属性由 XNA Framework 提供支持CaseSensitive指示表中的字符串比较是否区分大小写。
公共属性由 XNA Framework 提供支持ChildRelations获取此 DataTable 的子关系的集合。
公共属性由 XNA Framework 提供支持Columns获取属于该表的列的集合。
公共属性由 XNA Framework 提供支持Constraints获取由该表维护的约束的集合。
公共属性由 XNA Framework 提供支持Container获取组件的容器。 (继承自 MarshalByValueComponent。)
公共属性由 XNA Framework 提供支持DataSet获取此表所属的 DataSet
公共属性由 XNA Framework 提供支持DefaultView获取可能包括筛选视图或游标位置的表的自定义视图。
公共属性由 XNA Framework 提供支持DesignMode获取指示组件当前是否处于设计模式的值。 (继承自 MarshalByValueComponent。)
公共属性由 XNA Framework 提供支持DisplayExpression获取或设置一个表达式,该表达式返回的值用于表示用户界面中的此表。 DisplayExpression 属性用于在用户界面中显示此表的名称。
受保护的属性由 XNA Framework 提供支持Events获取附加到该组件的事件处理程序的列表。 (继承自 MarshalByValueComponent。)
公共属性由 XNA Framework 提供支持ExtendedProperties获取自定义用户信息的集合。
公共属性由 XNA Framework 提供支持HasErrors获取一个值,该值指示该表所属的 DataSet 的任何表的任何行中是否有错误。
公共属性由 XNA Framework 提供支持IsInitialized获取一个值,该值指示是否已初始化 DataTable
公共属性由 XNA Framework 提供支持Locale获取或设置用于比较表中字符串的区域设置信息。
公共属性由 XNA Framework 提供支持MinimumCapacity获取或设置该表最初的起始大小。
公共属性由 XNA Framework 提供支持Namespace获取或设置 DataTable 中所存储数据的 XML 表示形式的命名空间。
公共属性由 XNA Framework 提供支持ParentRelations获取该 DataTable 的父关系的集合。
公共属性由 XNA Framework 提供支持Prefix获取或设置 DataTable 中所存储数据的 XML 表示形式的命名空间。
公共属性由 XNA Framework 提供支持PrimaryKey获取或设置充当数据表主键的列的数组。
公共属性RemotingFormat获取或设置序列化格式。
公共属性由 XNA Framework 提供支持Rows获取属于该表的行的集合。
公共属性由 XNA Framework 提供支持Site获取或设置 DataTableSystem.ComponentModel..::.ISite (重写 MarshalByValueComponent..::.Site。)
公共属性由 XNA Framework 提供支持TableName获取或设置 DataTable 的名称。
页首
方法

  名称说明
公共方法由 XNA Framework 提供支持AcceptChanges提交自上次调用 AcceptChanges 以来对该表进行的所有更改。
公共方法由 XNA Framework 提供支持BeginInit开始初始化在窗体上使用或由另一个组件使用的 DataTable 初始化发生在运行时。
公共方法由 XNA Framework 提供支持BeginLoadData在加载数据时关闭通知、索引维护和约束。
公共方法由 XNA Framework 提供支持Clear清除所有数据的 DataTable
公共方法由 XNA Framework 提供支持Clone克隆 DataTable 的结构,包括所有 DataTable 架构和约束。
公共方法由 XNA Framework 提供支持Compute计算用来传递筛选条件的当前行上的给定表达式。
公共方法由 XNA Framework 提供支持Copy复制该 DataTable 的结构和数据。
公共方法由 XNA Framework 提供支持CreateDataReader返回与此 DataTable 中的数据相对应的 DataTableReader
受保护的方法由 XNA Framework 提供支持CreateInstance基础结构。创建 DataTable 的新实例。
公共方法由 XNA Framework 提供支持Dispose()()()释放由 MarshalByValueComponent 使用的所有资源。 (继承自 MarshalByValueComponent。)
受保护的方法由 XNA Framework 提供支持Dispose(Boolean)释放由 MarshalByValueComponent 占用的非托管资源,还可以另外再释放托管资源。 (继承自 MarshalByValueComponent。)
公共方法由 XNA Framework 提供支持EndInit结束在窗体上使用或由另一个组件使用的 DataTable 的初始化。 初始化发生在运行时。
公共方法由 XNA Framework 提供支持EndLoadData在加载数据后打开通知、索引维护和约束。
公共方法由 XNA Framework 提供支持Equals(Object)确定指定的 Object 是否等于当前的 Object (继承自 Object。)
受保护的方法由 XNA Framework 提供支持Finalize允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 MarshalByValueComponent。)
公共方法由 XNA Framework 提供支持GetChanges()()()获取 DataTable 的副本,该副本包含自加载以来或自上次调用 AcceptChanges 以来对该数据集进行的所有更改。
公共方法由 XNA Framework 提供支持GetChanges(DataRowState)获取由 DataRowState 筛选的 DataTable 的副本,该副本包含上次加载以来或调用 AcceptChanges 以来对该数据集进行的所有更改。
公共方法静态成员由 XNA Framework 提供支持GetDataTableSchema该方法返回一个包含 Web 服务描述语言 (WSDL) 的 XmlSchemaSet 实例,该语言描述了用作 Web 服务的 DataTable
公共方法由 XNA Framework 提供支持GetErrors获取包含错误的 DataRow 对象的数组。
公共方法由 XNA Framework 提供支持GetHashCode用作特定类型的哈希函数。 (继承自 Object。)
公共方法GetObjectData用序列化 DataTable 所需的数据填充序列化信息对象。
受保护的方法由 XNA Framework 提供支持GetRowType基础结构。获取行类型。
受保护的方法由 XNA Framework 提供支持GetSchema基础结构。有关此成员的说明,请参见 IXmlSerializable..::.GetSchema
公共方法由 XNA Framework 提供支持GetService获取 IServiceProvider 的实施者。 (继承自 MarshalByValueComponent。)
公共方法由 XNA Framework 提供支持GetType获取当前实例的 Type (继承自 Object。)
公共方法由 XNA Framework 提供支持ImportRowDataRow 复制到 DataTable 中,保留任何属性设置以及初始值和当前值。
公共方法由 XNA Framework 提供支持Load(IDataReader)通过所提供的 IDataReader,用某个数据源的值填充 DataTable 如果 DataTable 已经包含行,则从数据源传入的数据将与现有的行合并。
公共方法由 XNA Framework 提供支持Load(IDataReader, LoadOption)通过所提供的 IDataReader,用某个数据源的值填充 DataTable 如果 DataTable 已包含行,则从数据源传入的数据将根据 loadOption 参数的值与现有的行合并。
公共方法由 XNA Framework 提供支持Load(IDataReader, LoadOption, FillErrorEventHandler)通过所提供的使用错误处理委托的 IDataReader 用某个数据源中的值填充 DataTable
公共方法由 XNA Framework 提供支持LoadDataRow(array<Object>[]()[], Boolean)查找和更新特定行。 如果找不到任何匹配行,则使用给定值创建新行。
公共方法由 XNA Framework 提供支持LoadDataRow(array<Object>[]()[], LoadOption)查找和更新特定行。 如果找不到任何匹配行,则使用给定值创建新行。
受保护的方法由 XNA Framework 提供支持MemberwiseClone创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法由 XNA Framework 提供支持Merge(DataTable)将指定的 DataTable 与当前的 DataTable 合并。
公共方法由 XNA Framework 提供支持Merge(DataTable, Boolean)将指定的 DataTable 与当前的 DataTable 合并,指示是否在当前的 DataTable 中保留更改。
公共方法由 XNA Framework 提供支持Merge(DataTable, Boolean, MissingSchemaAction)将指定的 DataTable 与当前的 DataTable 合并,指示是否在当前的 DataTable 中保留更改以及如何处理缺失的架构。
公共方法由 XNA Framework 提供支持NewRow创建与该表具有相同架构的新 DataRow
受保护的方法由 XNA Framework 提供支持NewRowArray基础结构。返回 DataRow 的数组。
受保护的方法由 XNA Framework 提供支持NewRowFromBuilder从现有的行创建新行。
受保护的方法由 XNA Framework 提供支持OnColumnChanged引发 ColumnChanged 事件。
受保护的方法由 XNA Framework 提供支持OnColumnChanging引发 ColumnChanging 事件。
受保护的方法由 XNA Framework 提供支持OnPropertyChanging引发 PropertyChanged 事件。
受保护的方法OnRemoveColumn通知 DataTableDataColumn 正在被移除。
受保护的方法由 XNA Framework 提供支持OnRowChanged引发 RowChanged 事件。
受保护的方法由 XNA Framework 提供支持OnRowChanging引发 RowChanging 事件。
受保护的方法由 XNA Framework 提供支持OnRowDeleted引发 RowDeleted 事件。
受保护的方法由 XNA Framework 提供支持OnRowDeleting引发 RowDeleting 事件。
受保护的方法由 XNA Framework 提供支持OnTableCleared引发 TableCleared 事件。
受保护的方法由 XNA Framework 提供支持OnTableClearing引发 TableClearing 事件。
受保护的方法由 XNA Framework 提供支持OnTableNewRow引发 TableNewRow 事件。
公共方法由 XNA Framework 提供支持ReadXml(Stream)使用指定的 Stream 将 XML 架构和数据读入 DataTable
公共方法由 XNA Framework 提供支持ReadXml(String)将指定文件中的 XML 架构和数据读入 DataTable 中。
公共方法由 XNA Framework 提供支持ReadXml(TextReader)使用指定的 TextReader 将 XML 架构和数据读入 DataTable
公共方法由 XNA Framework 提供支持ReadXml(XmlReader)使用指定的 XmlReader 将 XML 架构和数据读入 DataTable
公共方法由 XNA Framework 提供支持ReadXmlSchema(Stream)使用指定流将 XML 架构读入 DataTable 中。
公共方法由 XNA Framework 提供支持ReadXmlSchema(String)将指定文件中的 XML 架构读入 DataTable 中。
公共方法由 XNA Framework 提供支持ReadXmlSchema(TextReader)使用指定的 TextReader 将 XML 架构读入 DataTable 中。
公共方法由 XNA Framework 提供支持ReadXmlSchema(XmlReader)使用指定的 XmlReader 将 XML 架构读入 DataTable 中。
受保护的方法由 XNA Framework 提供支持ReadXmlSerializable基础结构。从 XML 流中读取。
公共方法由 XNA Framework 提供支持RejectChanges回滚自该表加载以来或上次调用 AcceptChanges 以来对该表进行的所有更改。
公共方法由 XNA Framework 提供支持ResetDataTable 重置为其初始状态。
公共方法由 XNA Framework 提供支持Select()()()获取所有 DataRow 对象的数组。
公共方法由 XNA Framework 提供支持Select(String)获取按与筛选条件相匹配的所有 DataRow 对象的数组。
公共方法由 XNA Framework 提供支持Select(String, String)获取按照指定的排序顺序且与筛选条件相匹配的所有 DataRow 对象的数组。
公共方法由 XNA Framework 提供支持Select(String, String, DataViewRowState)获取与排序顺序中的筛选器以及指定的状态相匹配的所有 DataRow 对象的数组。
公共方法由 XNA Framework 提供支持ToString获取 TableNameDisplayExpression(如果有一个用作连接字符串)。 (重写 MarshalByValueComponent..::.ToString()()()。)
公共方法由 XNA Framework 提供支持WriteXml(Stream)使用指定的 Stream 以 XML 格式写入 DataTable 的当前内容。
公共方法由 XNA Framework 提供支持WriteXml(String)使用指定的文件以 XML 格式写入 DataTable 的当前内容。
公共方法由 XNA Framework 提供支持WriteXml(TextWriter)使用指定的 TextWriter 以 XML 格式写入 DataTable 的当前内容。
公共方法由 XNA Framework 提供支持WriteXml(XmlWriter)使用指定的 XmlWriter 以 XML 格式写入 DataTable 的当前内容。
公共方法由 XNA Framework 提供支持WriteXml(Stream, Boolean)使用指定的 Stream 以 XML 格式写入 DataTable 的当前内容。 若要保存该表及其所有子代的数据,请将 writeHierarchy 参数设置为 true
公共方法由 XNA Framework 提供支持WriteXml(Stream, XmlWriteMode)使用指定的 XmlWriteModeDataTable 的当前数据写入指定的文件,还可以选择将架构写入指定的文件。 若要写架构,请将 mode 参数的值设置为 WriteSchema
公共方法由 XNA Framework 提供支持WriteXml(String, Boolean)使用指定的文件以 XML 格式写入 DataTable 的当前内容。 若要保存该表及其所有子代的数据,请将 writeHierarchy 参数设置为 true
公共方法由 XNA Framework 提供支持WriteXml(String, XmlWriteMode)使用指定的文件和 XmlWriteMode,写入 DataTable 的当前数据(还可以选择写入架构)。 若要写架构,请将 mode 参数的值设置为 WriteSchema
公共方法由 XNA Framework 提供支持WriteXml(TextWriter, Boolean)使用指定的 TextWriter 以 XML 格式写入 DataTable 的当前内容。 若要保存该表及其所有子代的数据,请将 writeHierarchy 参数设置为 true
公共方法由 XNA Framework 提供支持WriteXml(TextWriter, XmlWriteMode)使用指定的 TextWriterXmlWriteMode 写入 DataTable 的当前数据,还可以选择写入架构。 若要写架构,请将 mode 参数的值设置为 WriteSchema
公共方法由 XNA Framework 提供支持WriteXml(XmlWriter, Boolean)使用指定的 XmlWriter 以 XML 格式写入 DataTable 的当前内容。
公共方法由 XNA Framework 提供支持WriteXml(XmlWriter, XmlWriteMode)使用指定的 XmlWriterXmlWriteMode 写入 DataTable 的当前数据,还可以选择写入架构。 若要写架构,请将 mode 参数的值设置为 WriteSchema
公共方法由 XNA Framework 提供支持WriteXml(Stream, XmlWriteMode, Boolean)使用指定的 XmlWriteModeDataTable 的当前数据写入指定的文件,还可以选择将架构写入指定的文件。 若要写架构,请将 mode 参数的值设置为 WriteSchema 若要保存该表及其所有子代的数据,请将 writeHierarchy 参数设置为 true
公共方法由 XNA Framework 提供支持WriteXml(String, XmlWriteMode, Boolean)使用指定的文件和 XmlWriteMode,写入 DataTable 的当前数据(还可以选择写入架构)。 若要写架构,请将 mode 参数的值设置为 WriteSchema 若要保存该表及其所有子代的数据,请将 writeHierarchy 参数设置为 true
公共方法由 XNA Framework 提供支持WriteXml(TextWriter, XmlWriteMode, Boolean)使用指定的 TextWriterXmlWriteMode 写入 DataTable 的当前数据,还可以选择写入架构。 若要写架构,请将 mode 参数的值设置为 WriteSchema 若要保存该表及其所有子代的数据,请将 writeHierarchy 参数设置为 true
公共方法由 XNA Framework 提供支持WriteXml(XmlWriter, XmlWriteMode, Boolean)使用指定的 XmlWriterXmlWriteMode 写入 DataTable 的当前数据,还可以选择写入架构。 若要写架构,请将 mode 参数的值设置为 WriteSchema 若要保存该表及其所有子代的数据,请将 writeHierarchy 参数设置为 true
公共方法由 XNA Framework 提供支持WriteXmlSchema(Stream)DataTable 的当前数据结构以 XML 架构形式写入指定的流。
公共方法由 XNA Framework 提供支持WriteXmlSchema(String)DataTable 的当前数据结构以 XML 架构形式写入指定的文件。
公共方法由 XNA Framework 提供支持WriteXmlSchema(TextWriter)使用指定的 TextWriterDataTable 的当前数据结构编写为 XML 架构。
公共方法由 XNA Framework 提供支持WriteXmlSchema(XmlWriter)使用指定的 XmlWriterDataTable 的当前数据结构以 XML 架构形式写入。
公共方法由 XNA Framework 提供支持WriteXmlSchema(Stream, Boolean)DataTable 的当前数据结构以 XML 架构形式写入指定的流。 若要保存该表及其所有子代的架构,请将 writeHierarchy 参数设置为 true
公共方法由 XNA Framework 提供支持WriteXmlSchema(String, Boolean)DataTable 的当前数据结构以 XML 架构形式写入指定的文件。 若要保存该表及其所有子代的架构,请将 writeHierarchy 参数设置为 true
公共方法由 XNA Framework 提供支持WriteXmlSchema(TextWriter, Boolean)使用指定的 TextWriterDataTable 的当前数据结构编写为 XML 架构。 若要保存该表及其所有子代的架构,请将 writeHierarchy 参数设置为 true
公共方法由 XNA Framework 提供支持WriteXmlSchema(XmlWriter, Boolean)使用指定的 XmlWriterDataTable 的当前数据结构以 XML 架构形式写入。 若要保存该表及其所有子代的架构,请将 writeHierarchy 参数设置为 true
页首
事件

  名称说明
公共事件由 XNA Framework 提供支持ColumnChangedDataRow 中指定的 DataColumn 的值被更改后发生。
公共事件由 XNA Framework 提供支持ColumnChangingDataRow 中指定的 DataColumn 的值发生更改时发生。
公共事件由 XNA Framework 提供支持Disposed添加事件处理程序以侦听组件上的 Disposed 事件。 (继承自 MarshalByValueComponent。)
公共事件由 XNA Framework 提供支持Initialized初始化 DataTable 后发生。
公共事件由 XNA Framework 提供支持RowChanged在成功更改 DataRow 之后发生。
公共事件由 XNA Framework 提供支持RowChangingDataRow 正在更改时发生。
公共事件由 XNA Framework 提供支持RowDeleted在表中的行已被删除后发生。
公共事件由 XNA Framework 提供支持RowDeleting在表中的行要被删除之前发生。
公共事件由 XNA Framework 提供支持TableCleared清除 DataTable 后发生。
公共事件由 XNA Framework 提供支持TableClearing清除 DataTable 后发生。
公共事件由 XNA Framework 提供支持TableNewRow插入新 DataRow 时发生。
页首
扩展方法

  名称说明
公共扩展方法AsDataView创建并返回支持 LINQ 的 DataView 对象。 (由 DataTableExtensions 定义。)
公共扩展方法AsEnumerable返回一个 IEnumerable<(Of <(T>)>) 对象,其泛型参数 TDataRow 此对象可用在 LINQ 表达式或方法查询中。 (由 DataTableExtensions 定义。)
页首
字段

  名称说明
受保护的字段由 XNA Framework 提供支持fInitInProgress基础结构。检查是否正在进行初始化。 初始化发生在运行时。
页首
显式接口实现

  名称说明
显式接口实现私有属性由 XNA Framework 提供支持IListSource..::.ContainsListCollection有关此成员的说明,请参见 IListSource..::.ContainsListCollection
显式接口实现私有方法由 XNA Framework 提供支持IListSource..::.GetList有关此成员的说明,请参见 IListSource..::.GetList
显式接口实现私有方法由 XNA Framework 提供支持IXmlSerializable..::.GetSchema有关此成员的说明,请参见 IXmlSerializable..::.GetSchema
显式接口实现私有方法由 XNA Framework 提供支持IXmlSerializable..::.ReadXml有关此成员的说明,请参见 IXmlSerializable..::.ReadXml
显式接口实现私有方法由 XNA Framework 提供支持IXmlSerializable..::.WriteXml有关此成员的说明,请参见 IXmlSerializable..::.WriteXml
页首
备注

DataTable 是 ADO.NET 库中的核心对象。 其他使用 DataTable 的对象包括 DataSetDataView

当访问 DataTable 对象时,请注意它们是按条件区分大小写的。 例如,如果一个 DataTable 被命名为“mydatatable”,另一个被命名为“Mydatatable”,则用于搜索其中一个表的字符串被认为是区分大小写的。 但是,如果“mydatatable”存在而“Mydatatable”不存在,则认为该搜索字符串不区分大小写。 一个 DataSet 可以包含两个 DataTable 对象,它们具有相同的 TableName 属性值和不同的 Namespace 属性值。 有关使用 DataTable 对象的更多信息,请参见创建数据表 (ADO.NET)

如果正在以编程方式创建 DataTable,则必须先通过将 DataColumn 对象添加到 DataColumnCollection(通过 Columns 属性访问)中来定义其架构。 有关添加 DataColumn 对象的更多信息,请参见向数据表中添加列 (ADO.NET)

若要向 DataTable 中添加行,必须先使用 NewRow 方法返回新的 DataRow 对象。 NewRow 方法返回具有 DataTable 的架构的行,就像由该表的 DataColumnCollection 定义的那样。 DataTable 可存储的最大行数是 16,777,216。 有关更多信息,请参见 向数据表中添加数据

DataTable 也包含可用于确保数据完整性的 Constraint 对象的集合。 有关更多信息,请参见 数据表约束 (ADO.NET)

有许多 DataTable 事件可用于确定对表进行更改的时间。 这些方法包括 RowChangedRowChangingRowDeletingRowDeleted 有关可与 DataTable 一起使用的事件的更多信息,请参见处理 DataTable 事件 (ADO.NET)

当创建 DataTable 的实例时,某些读/写属性将被设置为初始值。 有关这些值的列表,请参见 DataTable..::.DataTable 构造函数主题。

注意注意

DataSetDataTable 对象从 MarshalByValueComponent 继承,并支持用于 .NET Framework 远程处理的 ISerializable 接口。 它们是唯一可用于 .NET Framework 远程处理的 ADO.NET 对象。

TopicLocation
如何:创建数据表Visual Studio 中的数据访问
如何:创建数据表Visual Studio 中的数据访问
示例

下面的示例创建两个 DataTable 对象和一个 DataRelation 对象,并将这些新对象添加到 DataSet 中。 这些表随后会显示在 DataGridView 控件中。

Visual Basic
' Put the next line into the Declarations section.
private dataSet As DataSet 

Private Sub MakeDataTables()
    ' Run all of the functions. 
    MakeParentTable()
    MakeChildTable()
    MakeDataRelation()
    BindToDataGrid()
End Sub

Private Sub MakeParentTable()
    ' Create a new DataTable.
    Dim table As DataTable = new DataTable("ParentTable")

    ' Declare variables for DataColumn and DataRow objects.
    Dim column As DataColumn 
    Dim row As DataRow 

    ' Create new DataColumn, set DataType, ColumnName 
    ' and add to DataTable.    
    column = New DataColumn()
    column.DataType = System.Type.GetType("System.Int32")
    column.ColumnName = "id"
    column.ReadOnly = True
    column.Unique = True

    ' Add the Column to the DataColumnCollection.
    table.Columns.Add(column)

    ' Create second column.
    column = New DataColumn()
    column.DataType = System.Type.GetType("System.String")
    column.ColumnName = "ParentItem"
    column.AutoIncrement = False
    column.Caption = "ParentItem"
    column.ReadOnly = False
    column.Unique = False

    ' Add the column to the table.
    table.Columns.Add(column)

    ' Make the ID column the primary key column.
    Dim PrimaryKeyColumns(0) As DataColumn
    PrimaryKeyColumns(0)= table.Columns("id")
    table.PrimaryKey = PrimaryKeyColumns

    ' Instantiate the DataSet variable.
    dataSet = New DataSet()

    ' Add the new DataTable to the DataSet.
    dataSet.Tables.Add(table)

    ' Create three new DataRow objects and add 
    ' them to the DataTable
    Dim i As Integer
    For i = 0 to 2
       row = table.NewRow()
       row("id") = i
       row("ParentItem") = "ParentItem " + i.ToString()
       table.Rows.Add(row)
    Next i
End Sub

Private Sub MakeChildTable()
    ' Create a new DataTable.
    Dim table As DataTable = New DataTable("childTable")
    Dim column As DataColumn 
    Dim row As DataRow 

    ' Create first column and add to the DataTable.
    column = New DataColumn()
    column.DataType= System.Type.GetType("System.Int32")
    column.ColumnName = "ChildID"
    column.AutoIncrement = True
    column.Caption = "ID"
    column.ReadOnly = True
    column.Unique = True

    ' Add the column to the DataColumnCollection.
    table.Columns.Add(column)

    ' Create second column.
    column = New DataColumn()
    column.DataType= System.Type.GetType("System.String")
    column.ColumnName = "ChildItem"
    column.AutoIncrement = False
    column.Caption = "ChildItem"
    column.ReadOnly = False
    column.Unique = False
    table.Columns.Add(column)

    ' Create third column.
    column = New DataColumn()
    column.DataType= System.Type.GetType("System.Int32")
    column.ColumnName = "ParentID"
    column.AutoIncrement = False
    column.Caption = "ParentID"
    column.ReadOnly = False
    column.Unique = False
    table.Columns.Add(column)

    dataSet.Tables.Add(table)

    ' Create three sets of DataRow objects, five rows each, 
    ' and add to DataTable.
    Dim i As Integer
    For i = 0 to 4
       row = table.NewRow()
       row("childID") = i
       row("ChildItem") = "Item " + i.ToString()
       row("ParentID") = 0 
       table.Rows.Add(row)
    Next i
    For i = 0 to 4
       row = table.NewRow()
       row("childID") = i + 5
       row("ChildItem") = "Item " + i.ToString()
       row("ParentID") = 1 
       table.Rows.Add(row)
    Next i
    For i = 0 to 4
       row = table.NewRow()
       row("childID") = i + 10
       row("ChildItem") = "Item " + i.ToString()
       row("ParentID") = 2 
       table.Rows.Add(row)
    Next i
End Sub

Private Sub MakeDataRelation()
    ' DataRelation requires two DataColumn 
    ' (parent and child) and a name.
    Dim parentColumn As DataColumn = _
        dataSet.Tables("ParentTable").Columns("id")
    Dim childColumn As DataColumn = _
        dataSet.Tables("ChildTable").Columns("ParentID")
    Dim relation As DataRelation = new _
        DataRelation("parent2Child", parentColumn, childColumn)
    dataSet.Tables("ChildTable").ParentRelations.Add(relation)
End Sub

Private Sub BindToDataGrid()
    ' Instruct the DataGrid to bind to the DataSet, with the 
    ' ParentTable as the topmost DataTable.
    DataGrid1.SetDataBinding(dataSet,"ParentTable")
End Sub
 
C#
// Put the next line into the Declarations section.
private System.Data.DataSet dataSet;

private void MakeDataTables()
{
    // Run all of the functions. 
    MakeParentTable();
    MakeChildTable();
    MakeDataRelation();
    BindToDataGrid();
}

private void MakeParentTable()
{
    // Create a new DataTable.
    System.Data.DataTable table = new DataTable("ParentTable");
    // Declare variables for DataColumn and DataRow objects.
    DataColumn column;
    DataRow row;

    // Create new DataColumn, set DataType, 
    // ColumnName and add to DataTable.    
    column = new DataColumn();
    column.DataType = System.Type.GetType("System.Int32");
    column.ColumnName = "id";
    column.ReadOnly = true;
    column.Unique = true;
    // Add the Column to the DataColumnCollection.
    table.Columns.Add(column);

    // Create second column.
    column = new DataColumn();
    column.DataType = System.Type.GetType("System.String");
    column.ColumnName = "ParentItem";
    column.AutoIncrement = false;
    column.Caption = "ParentItem";
    column.ReadOnly = false;
    column.Unique = false;
    // Add the column to the table.
    table.Columns.Add(column);

    // Make the ID column the primary key column.
    DataColumn[] PrimaryKeyColumns = new DataColumn[1];
    PrimaryKeyColumns[0] = table.Columns["id"];
    table.PrimaryKey = PrimaryKeyColumns;

    // Instantiate the DataSet variable.
    dataSet = new DataSet();
    // Add the new DataTable to the DataSet.
    dataSet.Tables.Add(table);

    // Create three new DataRow objects and add 
    // them to the DataTable
    for (int i = 0; i<= 2; i++)
    {
        row = table.NewRow();
        row["id"] = i;
        row["ParentItem"] = "ParentItem " + i;
        table.Rows.Add(row);
    }
}

private void MakeChildTable()
{
    // Create a new DataTable.
    DataTable table = new DataTable("childTable");
    DataColumn column;
    DataRow row;

    // Create first column and add to the DataTable.
    column = new DataColumn();
    column.DataType= System.Type.GetType("System.Int32");
    column.ColumnName = "ChildID";
    column.AutoIncrement = true;
    column.Caption = "ID";
    column.ReadOnly = true;
    column.Unique = true;

    // Add the column to the DataColumnCollection.
    table.Columns.Add(column);

    // Create second column.
    column = new DataColumn();
    column.DataType= System.Type.GetType("System.String");
    column.ColumnName = "ChildItem";
    column.AutoIncrement = false;
    column.Caption = "ChildItem";
    column.ReadOnly = false;
    column.Unique = false;
    table.Columns.Add(column);

    // Create third column.
    column = new DataColumn();
    column.DataType= System.Type.GetType("System.Int32");
    column.ColumnName = "ParentID";
    column.AutoIncrement = false;
    column.Caption = "ParentID";
    column.ReadOnly = false;
    column.Unique = false;
    table.Columns.Add(column);

    dataSet.Tables.Add(table);

    // Create three sets of DataRow objects, 
    // five rows each, and add to DataTable.
    for(int i = 0; i <= 4; i ++)
    {
        row = table.NewRow();
        row["childID"] = i;
        row["ChildItem"] = "Item " + i;
        row["ParentID"] = 0 ;
        table.Rows.Add(row);
    }
    for(int i = 0; i <= 4; i ++)
    {
        row = table.NewRow();
        row["childID"] = i + 5;
        row["ChildItem"] = "Item " + i;
        row["ParentID"] = 1 ;
        table.Rows.Add(row);
    }
    for(int i = 0; i <= 4; i ++)
    {
        row = table.NewRow();
        row["childID"] = i + 10;
        row["ChildItem"] = "Item " + i;
        row["ParentID"] = 2 ;
        table.Rows.Add(row);
    }
}

private void MakeDataRelation()
{
    // DataRelation requires two DataColumn 
    // (parent and child) and a name.
    DataColumn parentColumn = 
        dataSet.Tables["ParentTable"].Columns["id"];
    DataColumn childColumn = 
        dataSet.Tables["ChildTable"].Columns["ParentID"];
    DataRelation relation = new 
        DataRelation("parent2Child", parentColumn, childColumn);
    dataSet.Tables["ChildTable"].ParentRelations.Add(relation);
}

private void BindToDataGrid()
{
    // Instruct the DataGrid to bind to the DataSet, with the 
    // ParentTable as the topmost DataTable.
    dataGrid1.SetDataBinding(dataSet,"ParentTable");
}
版本信息

.NET Framework

受以下版本支持:4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1
平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求
线程安全

该类型对于多线程读操作是安全的。 您必须使任何写操作同步。

请参见

参考

其他资源

标记 :


Page view tracker