IDataAdapter.Fill(DataSet) 方法

定义

添加或更新 DataSet 中的行以匹配使用 DataSet 名称的数据源中的行,并创建一个名为“Table”的 DataTable

public:
 int Fill(System::Data::DataSet ^ dataSet);
public int Fill (System.Data.DataSet dataSet);
abstract member Fill : System.Data.DataSet -> int
Public Function Fill (dataSet As DataSet) As Integer

参数

dataSet
DataSet

要用记录和架构(如果必要)填充的 DataSet

返回

已在 DataSet 中成功添加或刷新的行数。 这不包括受不返回行的语句影响的行。

注解

Fill 使用关联 SelectCommand 属性指定的 SELECT 语句从数据源中检索行。 与 SELECT 语句关联的连接对象必须有效,但不需要打开。 如果在调用 之前 Fill 关闭了连接,则会将其打开以检索数据,然后关闭。 如果在调用 之前 Fill 连接处于打开状态,则连接将保持打开状态。

然后,该Fill操作将行添加到 中DataSet的目标DataTable对象,如果对象尚不存在,则创建DataTable这些对象。 创建 DataTable 对象时, Fill 该操作通常仅创建列名元数据。 但是,如果 属性 MissingSchemaAction 设置为 AddWithKey,也会创建相应的主键和约束。

如果 SelectCommand 返回 OUTER JOIN 的结果,则 DataAdapter 不会为生成的 PrimaryKey 设置 DataTable值。 必须显式定义主键,以确保正确解析重复行。 有关详细信息,请参阅定义主键

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

当用于填充 DataSet 的 SELECT 语句返回多个结果(例如批处理 SQL 语句)时,如果其中一个结果包含错误,则会跳过所有连续的结果,并且不会添加到 中 DataSet

可以在同一 DataTable个 上多次使用 Fill 方法。 如果主键存在,传入的行将与已经存在的匹配行合并。 如果不存在主键,传入行将追加到 。DataTable

注意

处理返回多个结果的批处理 SQL 语句时,.NET Framework数据提供程序的 FillFillSchema 的实现仅检索第一个结果的架构信息。

适用于

另请参阅