Share via


IDataAdapter.FillSchema(DataSet, SchemaType) 方法

定义

将名为“Table”的 DataTable 添加到指定的 DataSet,并根据指定的 SchemaType 配置架构以匹配数据源中的架构。

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
public System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType);
abstract member FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
Public Function FillSchema (dataSet As DataSet, schemaType As SchemaType) As DataTable()

参数

dataSet
DataSet

要用数据源中的架构填充的 DataSet

schemaType
SchemaType

SchemaType 值之一。

返回

DataTable 对象的数组,这些对象包含从数据源返回的架构信息。

注解

方法 FillSchema 使用 SelectCommand从数据源检索架构。 与 关联的 SelectCommand 连接对象必须有效,但不需要打开。 如果在调用 之前 FillSchema 关闭了连接,则会打开该连接以检索数据,然后关闭。 如果连接在调用 之前 FillSchema 处于打开状态,它将保持打开状态。

操作 FillSchema 将 添加到 DataTable 目标 DataSet。 然后,它将列添加到 的 ,DataColumnCollectionDataTable并配置以下DataColumn属性(如果它们存在于数据源中):

FillSchema 还根据以下规则配置 PrimaryKeyConstraints 属性:

  • 如果 一个或多个主键列由 SelectCommand返回,则它们将用作 的主键列 DataTable

  • 如果未返回主键列,但唯一列为 ,则所有唯一列不可为 null 时,将唯一列用作主键。 如果任一列可为空, UniqueConstraint 则会将 添加到 , ConstraintCollectionPrimaryKey 未设置 属性。

  • 如果同时返回主键列和唯一列,则主键列将用作 的主键列 DataTable

请注意,主键和唯一约束根据前面的规则添加到 , ConstraintCollection 但不会添加其他约束类型。

如果在SQL Server表中的列上定义了唯一聚集索引,并且主键约束在一组单独的列上定义,则将返回聚集索引中列的名称。 若要返回主键列的名称,请将查询提示与 SELECT 语句结合使用,该语句指定主键索引的名称。 有关如何指定查询提示的详细信息,请参阅 Transact-SQL) - 查询 (提示

IDataAdapter如果在填充 DataTable时遇到重复列,它将使用模式“columnname1”、“columnname2”、“columnname3”等为连续列生成名称。 如果传入数据包含未命名的列,则根据模式“Column1”、“Column2”等将其放入 DataSet 中。 将多个结果集添加到 时, DataSet每个结果集都放在单独的表中。 其他结果集通过将整型值追加到指定的表名称 (例如“Table”、“Table1”、“Table2”等) 来命名。 应用程序在使用列名和表名时应小心,以确保不会发生与这些命名模式冲突的情况。

FillSchema 不返回任何行。 Fill使用 方法将行DataTable添加到 。

适用于

另请参阅