通过


DbDataAdapter.Fill 方法

定义

填充或 DataSet 填充 DataTable

重载

名称 说明
Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

使用DataSet源表名称、命令字符串和命令行为添加或刷新指定区域中DataSet的行,以匹配数据源中的行。

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

使用和DataTable名称添加或刷新指定区域中DataSet的行以匹配数据源DataSet中的行。

Fill(DataSet, String, IDataReader, Int32, Int32)

使用DataSetDataTable和名称添加或刷新指定区域中DataSet的行,以匹配数据源中的行和IDataReader名称。

Fill(DataSet, Int32, Int32, String)

使用和DataTable名称添加或刷新指定区域中DataSet的行以匹配数据源DataSet中的行。

Fill(Int32, Int32, DataTable[])

在一个或多个 DataTable 对象中添加或刷新行,以匹配从指定记录开始的数据源中的行,并检索到指定的最大记录数。

Fill(DataTable)

使用名称添加或刷新指定区域中 DataSet 的行以匹配数据源 DataTable 中的行。

Fill(DataTable, IDataReader)

使用指定DataTable名称和IDataReader名称在数据源中添加DataTable或刷新行以匹配这些行。

Fill(DataSet, String)

使用和DataTable名称在数据源DataSet中添加DataSet或刷新行以匹配这些行。

Fill(DataSet)

在 . 中添加 DataSet或刷新行。

Fill(DataTable, IDbCommand, CommandBehavior)

使用指定的DataTableIDbCommandCommandBehavior行在数据源中添加DataTable或刷新行,以匹配数据源中的行。

Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

使用DataSet源表名称、命令字符串和命令行为添加或刷新指定区域中DataSet的行,以匹配数据源中的行。

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill(System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataSet * int * int * string * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String, command As IDbCommand, behavior As CommandBehavior) As Integer

参数

dataSet
DataSet

用于填充记录的 A DataSet ,如有必要,则为架构。

startRecord
Int32

要从零开始的记录编号。

maxRecords
Int32

要检索的最大记录数。 指定 0 以检索开始记录之后的所有记录。

srcTable
String

要用于表映射的源表的名称。

command
IDbCommand

用于从数据源检索行的 SQL SELECT 语句。

behavior
CommandBehavior

其中一个 CommandBehavior 值。

返回

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

例外

源表无效。

参数 startRecord 小于 0。

-或-

参数 maxRecords 小于 0。

注解

maxRecords值为 0 可获取开始记录之后找到的所有记录。 如果 maxRecords 大于剩余行数,则只返回剩余行,并且不会发出任何错误。

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

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

如果在填充 a DataTable时遇到重复列,则会使用模式“columnname 1”、“columnname2”、“columnname3”等生成后续列的名称。DbDataAdapter 如果传入数据包含未命名的列,则会根据模式“Column1”、“Column2”等将其置于 DataSet 其中。 将多个结果集添加到 DataSet 每个结果集时,将放在单独的表中。 通过将整型值追加到指定的表名(例如“Table”、“Table1”、“Table2”等)来命名其他结果集。 如果应用使用列名和表名,请确保这些命名模式不存在冲突。

此方法 Fill 支持包含 DataSet 多个 DataTable 对象(其名称仅因大小写而异)的方案。 在这种情况下, Fill 执行区分大小写的比较以查找相应的表,并在不存在完全匹配时创建新表。 以下 C# 代码演示了此行为。

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
dataset.Tables.Add("AAA");
adapter.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".

如果 Fill 调用,并且 DataSet 只包含名称仅因大小写而异的一个 DataTable ,则 DataTable 更新。 在此方案中,比较不区分大小写。 以下 C# 代码演示了此行为。

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
adapter.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.

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

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

注释

处理返回多个结果的批处理 SQL 语句时,.NET Framework 数据访问接口的 Fill 实现仅 FillSchema 检索第一个结果的架构信息。

继承者说明

此方法的 Fill(DataSet) 此重载受到保护,旨在供 .NET Framework 数据提供程序使用。

另请参阅

适用于

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

使用和DataTable名称添加或刷新指定区域中DataSet的行以匹配数据源DataSet中的行。

protected:
 virtual int Fill(cli::array <System::Data::DataTable ^> ^ dataTables, int startRecord, int maxRecords, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill(System.Data.DataTable[] dataTables, int startRecord, int maxRecords, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable[] * int * int * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTables As DataTable(), startRecord As Integer, maxRecords As Integer, command As IDbCommand, behavior As CommandBehavior) As Integer

参数

dataTables
DataTable[]

DataTable 从数据源填充的对象。

startRecord
Int32

要从零开始的记录编号。

maxRecords
Int32

要检索的最大记录数。 指定 0 以检索开始记录之后的所有记录。

command
IDbCommand

IDbCommand执行以填充DataTable对象。

behavior
CommandBehavior

其中一个 CommandBehavior 值。

返回

添加到数据表或刷新的行数。

例外

源表无效。

-或-

连接无效。

找不到连接。

参数 startRecord 小于 0。

-或-

参数 maxRecords 小于 0。

注解

maxRecords值为 0 可获取开始记录之后找到的所有记录。 如果 maxRecords 大于剩余行数,则只返回剩余行,并且不会发出任何错误。

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

如果命令不返回任何行,则不会向其中 DataSet添加任何表,但不会引发异常。

如果对象在填充 a DataTable时遇到重复列,它将使用模式“columnname 1”、“columnname2”、“columnname3”等生成后续列的名称。DbDataAdapter 如果传入数据包含未命名的列,则会根据模式“Column1”、“Column2”等将其置于 DataSet 其中。

当指定的查询返回多个结果时,每个结果集都放置在单独的表中。 通过将整型值追加到指定的表名(例如“Table”、“Table1”、“Table2”等)来命名其他结果集。 由于没有为不返回行的查询创建任何表,因此,如果要处理插入查询后跟选择查询,则为选择查询创建的表将命名为“Table”,因为它是第一个创建的表。 如果应用使用列名和表名,请确保这些命名模式不存在冲突。

此方法 Fill 支持包含 DataSet 多个 DataTable 对象(其名称仅因大小写而异)的方案。 在这种情况下, Fill 执行区分大小写的比较以查找相应的表,并在不存在完全匹配时创建新表。 以下 C# 代码演示了此行为。

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
dataset.Tables.Add("AAA");
adapter.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".

如果 Fill 调用,并且 DataSet 只包含名称仅因大小写而异的一个 DataTable ,则 DataTable 更新。 在此方案中,比较不区分大小写。 以下 C# 代码演示了此行为。

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
adapter.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.

如果在填充数据表时遇到错误或异常,则在发生错误之前添加的行将保留在数据表中。 操作的其余部分已中止。

当用于填充 DataTable 对象的 SELECT 语句返回多个结果(例如批处理 SQL 语句)时,请注意以下事项:

  • 处理批处理 SQL 语句中的多个结果时, maxRecords 仅适用于第一个结果。 对于包含分章结果的行(仅限 OLE DB 的 .NET Framework 数据提供程序)也是如此。 顶级结果受 maxRecords限制,但添加所有子行。

  • 如果其中一个结果包含错误,则会跳过所有后续结果。

注释

不会 DataSet 包含的记录数不能超过指定的 maxRecords记录数。 但是,查询生成的整个结果集仍从服务器返回。

继承者说明

在派生类中重写 Fill(DataSet) 时,请务必调用基类 Fill(DataSet) 的方法。

另请参阅

适用于

Fill(DataSet, String, IDataReader, Int32, Int32)

使用DataSetDataTable和名称添加或刷新指定区域中DataSet的行,以匹配数据源中的行和IDataReader名称。

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable, System::Data::IDataReader ^ dataReader, int startRecord, int maxRecords);
protected virtual int Fill(System.Data.DataSet dataSet, string srcTable, System.Data.IDataReader dataReader, int startRecord, int maxRecords);
override this.Fill : System.Data.DataSet * string * System.Data.IDataReader * int * int -> int
Protected Overridable Function Fill (dataSet As DataSet, srcTable As String, dataReader As IDataReader, startRecord As Integer, maxRecords As Integer) As Integer

参数

dataSet
DataSet

用于填充记录的 A DataSet ,如有必要,则为架构。

srcTable
String

要用于表映射的名称 DataTable

dataReader
IDataReader

IDataReader的名称。

startRecord
Int32

要从零开始的记录编号。

maxRecords
Int32

要检索的最大记录数。 指定 0 以检索开始记录之后的所有记录。

返回

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

例外

startRecord 小于 0。

-或-

maxRecords 小于 0。

注解

maxRecords值为 0 可获取开始记录之后找到的所有记录。 如果 maxRecords 大于剩余行数,则只返回剩余行,并且不会发出任何错误。

适用于

Fill(DataSet, Int32, Int32, String)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

使用和DataTable名称添加或刷新指定区域中DataSet的行以匹配数据源DataSet中的行。

public:
 int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable);
public int Fill(System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable);
override this.Fill : System.Data.DataSet * int * int * string -> int
Public Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String) As Integer

参数

dataSet
DataSet

用于填充记录的 A DataSet ,如有必要,则为架构。

startRecord
Int32

要从零开始的记录编号。

maxRecords
Int32

要检索的最大记录数。 指定 0 以检索开始记录之后的所有记录。

srcTable
String

要用于表映射的源表的名称。

返回

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

例外

源表无效。

-或-

连接无效。

找不到连接。

参数 startRecord 小于 0。

-或-

参数 maxRecords 小于 0。

示例

以下示例使用派生类从 OleDbDataAdapterCategories 表中填充 DataSet 15 行(从第 10 行开始)。 此示例假定已创建一个和一个 OleDbDataAdapterDataSet

public void GetRecords()
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet,9,15,"Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, 9, 15, "Categories")
End Sub

注解

maxRecords值为 0 可获取开始记录之后找到的所有记录。 如果 maxRecords 大于剩余行数,则只返回剩余行,并且不会发出任何错误。

如果相应的 select 命令是返回多个结果的语句, Fill 则仅适用于 maxRecords 第一个结果。

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

如果命令不返回任何行,则不会向其中 DataSet添加任何表,但不会引发异常。

如果对象在填充 a DataTable时遇到重复列,它将使用模式“columnname 1”、“columnname2”、“columnname3”等生成后续列的名称。DbDataAdapter 如果传入数据包含未命名的列,则会根据模式“Column1”、“Column2”等将其置于 DataSet 其中。

当指定的查询返回多个结果时,每个结果集都放置在单独的表中。 通过将整型值追加到指定的表名(例如“Table”、“Table1”、“Table2”等)来命名其他结果集。 由于没有为不返回行的查询创建表,因此,如果处理插入查询后跟选择查询,则为选择查询创建的表名为“Table”,因为它是创建的第一个表。 如果应用使用列名和表名,请确保这些命名模式不存在冲突。

此方法 Fill 支持包含 DataSet 多个 DataTable 对象(其名称仅因大小写而异)的方案。 在这种情况下, Fill 执行区分大小写的比较以查找相应的表,并在不存在完全匹配时创建新表。 以下 C# 代码演示了此行为。

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
dataset.Tables.Add("AAA");
adapter.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".

如果 Fill 调用,并且 DataSet 只包含名称仅因大小写而异的一个 DataTable ,则 DataTable 更新。 在此方案中,比较不区分大小写。 以下 C# 代码演示了此行为。

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
adapter.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.

如果在填充数据表时遇到错误或异常,则在发生错误之前添加的行将保留在数据表中。 操作的其余部分已中止。

当用于填充返回多个结果(如批处理 SQL 语句) DataSet 的 SELECT 语句时,请注意以下事项:

  • 处理批处理 SQL 语句中的多个结果时, maxRecords 仅适用于第一个结果。 对于包含分章结果的行(仅限 OLE DB 的 .NET Framework 数据提供程序)也是如此。 顶级结果受 maxRecords限制,但添加所有子行。

  • 如果其中一个结果包含错误,则会跳过所有后续结果,并且不会添加到该结果中 DataSet

使用后续 Fill 调用刷新内容 DataSet时,必须满足两个条件:

  1. SQL 语句应与最初用于填充该语句的 DataSet语句匹配。

  2. 列信息 必须存在。

如果存在主键信息,则将协调任何重复行,并且仅显示在对应于该DataSet行的DataTable一次。 主键信息可以通过指定属性或将属性设置为 来设置FillSchemaPrimaryKeyAddWithKeyDataTableMissingSchemaAction

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

注释

处理返回多个结果的批处理 SQL 语句时,用于 OLE DB 的 FillSchema .NET Framework 数据提供程序的实现仅检索第一个结果的架构信息。 若要检索多个结果的架构信息,请使用 Fill 设置为 MissingSchemaActionAddWithKey.

注释

不会 DataSet 包含的记录数不能超过指定的 maxRecords记录数。 但是,查询生成的整个结果集仍从服务器返回。

继承者说明

在派生类中重写 Fill(DataSet) 时,请务必调用基类 Fill(DataSet) 的方法。

另请参阅

适用于

Fill(Int32, Int32, DataTable[])

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

在一个或多个 DataTable 对象中添加或刷新行,以匹配从指定记录开始的数据源中的行,并检索到指定的最大记录数。

public:
 int Fill(int startRecord, int maxRecords, ... cli::array <System::Data::DataTable ^> ^ dataTables);
public int Fill(int startRecord, int maxRecords, params System.Data.DataTable[] dataTables);
override this.Fill : int * int * System.Data.DataTable[] -> int
Public Function Fill (startRecord As Integer, maxRecords As Integer, ParamArray dataTables As DataTable()) As Integer

参数

startRecord
Int32

要从零开始的记录编号。

maxRecords
Int32

要检索的最大记录数。 指定 0 以检索开始记录之后的所有记录。

dataTables
DataTable[]

DataTable 从数据源填充的对象。

返回

已成功添加到对象或刷新的 DataTable 行数。 此值不包括受不返回行的语句影响的行。

例外

dataTablesnull 或空数组。

startRecord 小于 0。

-或-

maxRecords 小于 0。

注解

maxRecords值为 0 可获取开始记录之后找到的所有记录。 如果 maxRecords 大于剩余行数,则只返回剩余行,并且不会发出任何错误。

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

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

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

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

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

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

注释

处理返回多个结果的批处理 SQL 语句时,用于 OLE DB 的 FillSchema .NET Framework 数据提供程序的实现仅检索第一个结果的架构信息。 若要检索多个结果的架构信息,请使用 Fill 设置为 MissingSchemaActionAddWithKey.

另请参阅

适用于

Fill(DataTable)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

使用名称添加或刷新指定区域中 DataSet 的行以匹配数据源 DataTable 中的行。

public:
 int Fill(System::Data::DataTable ^ dataTable);
public int Fill(System.Data.DataTable dataTable);
override this.Fill : System.Data.DataTable -> int
Public Function Fill (dataTable As DataTable) As Integer

参数

dataTable
DataTable

要用于表映射的名称 DataTable

返回

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

例外

源表无效。

注解

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

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

如果在填充 a DataTable时遇到重复列,则会使用模式“columnname 1”、“columnname2”、“columnname3”等生成后续列的名称。DbDataAdapter 如果传入数据包含未命名的列,则会根据模式“Column1”、“Column2”等将其置于 DataSet 其中。 将多个结果集添加到 DataSet 每个结果集时,将放在单独的表中。

作为参数的FillDataTable重载仅获取第一个结果。 使用该DataSet重载Fill作为参数来获取多个结果。

此方法 Fill 支持包含 DataSet 多个 DataTable 对象(其名称仅因大小写而异)的方案。 在这种情况下, Fill 执行区分大小写的比较以查找相应的表,并在不存在完全匹配时创建新表。 以下 C# 代码演示了此行为。

DataSet dataset = new DataSet();
 dataset.Tables.Add("aaa");
 dataset.Tables.Add("AAA");
 adapter.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
    adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".

如果 Fill 调用,并且 DataSet 只包含名称仅因大小写而异的一个 DataTable ,则 DataTable 更新。 在此方案中,比较不区分大小写。 以下 C# 代码演示了此行为。

DataSet dataset = new DataSet();
 dataset.Tables.Add("aaa");
    adapter.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.

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

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

注释

处理返回多个结果的批处理 SQL 语句时,.NET Framework 数据访问接口的 Fill 实现仅 FillSchema 检索第一个结果的架构信息。

继承者说明

此方法的 Fill(DataSet) 此重载受到保护,旨在供 .NET Framework 数据提供程序使用。

另请参阅

适用于

Fill(DataTable, IDataReader)

使用指定DataTable名称和IDataReader名称在数据源中添加DataTable或刷新行以匹配这些行。

protected:
 virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDataReader ^ dataReader);
protected virtual int Fill(System.Data.DataTable dataTable, System.Data.IDataReader dataReader);
override this.Fill : System.Data.DataTable * System.Data.IDataReader -> int
Protected Overridable Function Fill (dataTable As DataTable, dataReader As IDataReader) As Integer

参数

dataTable
DataTable

用于填充记录的 A DataTable ,如有必要,则为架构。

dataReader
IDataReader

IDataReader的名称。

返回

成功添加到或刷新的 DataTable行数。 这不包括受不返回行的语句影响的行。

适用于

Fill(DataSet, String)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

使用和DataTable名称在数据源DataSet中添加DataSet或刷新行以匹配这些行。

public:
 int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Fill(System.Data.DataSet dataSet, string srcTable);
override this.Fill : System.Data.DataSet * string -> int
Public Function Fill (dataSet As DataSet, srcTable As String) As Integer

参数

dataSet
DataSet

用于填充记录的 A DataSet ,如有必要,则为架构。

srcTable
String

要用于表映射的源表的名称。

返回

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

例外

源表无效。

示例

以下示例使用派生类填充OleDbDataAdapterDataSet类别表中的行。 此示例假定已创建一个和一个 OleDbDataAdapterDataSet

public void GetRecords()
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet, "Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, "Categories")
End Sub

注解

该方法 Fill 使用 SELECT 语句从数据源中检索数据。 IDbConnection与 select 命令关联的对象必须有效,但它不需要打开。 IDbConnection如果之前已关闭Fill,则会打开它以检索数据,然后关闭。 如果在调用之前 Fill 连接处于打开状态,它将保持打开状态。

如果命令不返回任何行,则不会向其中 DataSet添加任何表,也不会引发异常。

DbDataAdapter如果对象在填充 a DataTable时遇到重复列,它将使用模式“columnname1”、“columnname2”、“columnname3”等为后续列生成名称。 如果传入数据包含未命名的列,则会根据模式“Column1”、“Column2”等将其置于 DataSet 其中。

当指定的查询返回多个结果时,每个结果集都放置在单独的表中。 通过将整型值追加到指定的表名(例如“Table”、“Table1”、“Table2”等)来命名其他结果集。 由于没有为不返回行的查询创建任何表,因此,如果要处理插入查询后跟选择查询,则为选择查询创建的表将命名为“Table”,因为它是第一个创建的表。 如果应用使用列名和表名,请确保这些命名模式不存在冲突。

此方法 Fill 支持包含 DataSet 多个 DataTable 对象(其名称仅因大小写而异)的方案。 在这种情况下, Fill 执行区分大小写的比较以查找相应的表,并在不存在完全匹配时创建新表。 以下 C# 代码演示了此行为。

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
dataset.Tables.Add("AAA");
adapter.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".

如果 Fill 调用,并且 DataSet 只包含名称仅因大小写而异的一个 DataTable ,则 DataTable 更新。 在此方案中,比较不区分大小写。 以下 C# 代码演示了此行为。

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
adapter.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.

如果在填充数据表时遇到错误或异常,则在发生错误之前添加的行将保留在数据表中。 操作的其余部分已中止。

当用于填充 DataSet 返回多个结果(如批处理 SQL 语句)的 SELECT 语句时,请注意以下事项:

  • 如果其中一个结果包含错误,则会跳过所有后续结果,并且不会添加到该结果中 DataSet

使用后续 Fill 调用刷新内容 DataSet时,必须满足两个条件:

  1. SQL 语句应与最初用于填充该语句的 DataSet语句匹配。

  2. 列信息 必须存在。 如果存在主键信息,则会协调任何重复的行,并且仅出现在对应于该DataSet行的DataTable一次。 主键信息可以通过指定属性或将属性设置为 来设置FillSchemaPrimaryKeyAddWithKeyDataTableMissingSchemaAction

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

注释

处理返回多个结果的批处理 SQL 语句时,用于 OLE DB 的 FillSchema .NET Framework 数据提供程序的实现仅检索第一个结果的架构信息。 若要检索多个结果的架构信息,请使用 Fill 设置为 MissingSchemaActionAddWithKey.

继承者说明

在派生类中重写 Fill(DataSet) 时,请务必调用基类 Fill(DataSet) 的方法。

另请参阅

适用于

Fill(DataSet)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

在 . 中添加 DataSet或刷新行。

public:
 override int Fill(System::Data::DataSet ^ dataSet);
public override int Fill(System.Data.DataSet dataSet);
override this.Fill : System.Data.DataSet -> int
Public Overrides Function Fill (dataSet As DataSet) As Integer

参数

dataSet
DataSet

用于填充记录的 A DataSet ,如有必要,则为架构。

返回

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

实现

注解

该方法 Fill 使用 SELECT 语句从数据源中检索数据。 IDbConnection与 select 命令关联的对象必须有效,但它不需要打开。 IDbConnection如果之前已关闭Fill,则会打开它以检索数据,然后关闭。 如果在调用之前 Fill 连接处于打开状态,它将保持打开状态。

如果在填充数据表时遇到错误或异常,则在发生错误之前添加的行将保留在数据表中。 操作的其余部分已中止。

如果命令不返回任何行,则不会向其中 DataSet添加任何表,也不会引发异常。

如果对象在填充 a DataTable时遇到重复列,则会使用模式“columnname 1”、“columnname2”、“columnname3”等为后续列生成名称。DbDataAdapter 如果传入数据包含未命名的列,则会根据模式“Column1”、“Column2”等将其置于 DataSet 其中。

当指定的查询返回多个结果时,返回查询的每个行的结果集将放在单独的表中。 通过将整型值追加到指定的表名(例如“Table”、“Table1”、“Table2”等)来命名其他结果集。 由于没有为不返回行的查询创建表,因此,如果处理插入查询后跟选择查询,则为选择查询创建的表名为“Table”,因为它是第一个创建的表。 如果应用使用列名和表名,请确保这些命名模式不存在冲突。

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

使用后续 Fill 调用刷新内容 DataSet时,必须满足两个条件:

  1. SQL 语句应与最初用于填充该语句的 DataSet语句匹配。

  2. 列信息 必须存在。

如果存在主键信息,则会协调任何重复的行,并且仅出现在对应于该DataSet行的DataTable一次。 主键信息可以通过指定属性或将属性设置为 来设置FillSchemaPrimaryKeyAddWithKeyDataTableMissingSchemaAction

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

注释

处理返回多个结果的批处理 SQL 语句时,用于 OLE DB 的 FillSchema .NET Framework 数据提供程序的实现仅检索第一个结果的架构信息。 若要检索多个结果的架构信息,请使用 Fill 设置为 MissingSchemaActionAddWithKey.

另请参阅

适用于

Fill(DataTable, IDbCommand, CommandBehavior)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

使用指定的DataTableIDbCommandCommandBehavior行在数据源中添加DataTable或刷新行,以匹配数据源中的行。

protected:
 virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill(System.Data.DataTable dataTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTable As DataTable, command As IDbCommand, behavior As CommandBehavior) As Integer

参数

dataTable
DataTable

用于填充记录的 A DataTable ,如有必要,则为架构。

command
IDbCommand

用于从数据源检索行的 SQL SELECT 语句。

behavior
CommandBehavior

其中一个 CommandBehavior 值。

返回

成功添加到或刷新的 DataTable行数。 这不包括受不返回行的语句影响的行。

注解

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

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

如果对象在填充 a DataTable时遇到重复列,它将使用模式“columnname 1”、“columnname2”、“columnname3”等生成后续列的名称。DbDataAdapter 如果传入数据包含未命名的列,则会根据模式“Column1”、“Column2”等将其置于 DataSet 其中。

作为参数的FillDataTable重载仅获取第一个结果。 使用该DataSet重载Fill作为参数来获取多个结果。

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

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

注释

处理返回多个结果的批处理 SQL 语句时,用于 OLE DB 的 FillSchema .NET Framework 数据提供程序的实现仅检索第一个结果的架构信息。 若要检索多个结果的架构信息,请使用 Fill 设置为 MissingSchemaActionAddWithKey.

继承者说明

此方法的 Fill(DataSet) 此重载受到保护,旨在供 .NET Framework 数据提供程序使用。

另请参阅

适用于