DbDataAdapter.Fill 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
| 名称 | 说明 |
|---|---|
| Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) | |
| Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) | |
| Fill(DataSet, String, IDataReader, Int32, Int32) |
使用DataSetDataTable和名称添加或刷新指定区域中DataSet的行,以匹配数据源中的行和IDataReader名称。 |
| Fill(DataSet, Int32, Int32, String) | |
| Fill(Int32, Int32, DataTable[]) |
在一个或多个 DataTable 对象中添加或刷新行,以匹配从指定记录开始的数据源中的行,并检索到指定的最大记录数。 |
| Fill(DataTable) | |
| Fill(DataTable, IDataReader) |
使用指定DataTable名称和IDataReader名称在数据源中添加DataTable或刷新行以匹配这些行。 |
| Fill(DataSet, String) | |
| 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
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
参数
- startRecord
- Int32
要从零开始的记录编号。
- maxRecords
- Int32
要检索的最大记录数。 指定 0 以检索开始记录之后的所有记录。
- srcTable
- String
要用于表映射的源表的名称。
- command
- IDbCommand
用于从数据源检索行的 SQL SELECT 语句。
- behavior
- CommandBehavior
其中一个 CommandBehavior 值。
返回
成功添加到或刷新的 DataSet行数。 这不包括受不返回行的语句影响的行。
例外
注解
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
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
参数
- startRecord
- Int32
要从零开始的记录编号。
- maxRecords
- Int32
要检索的最大记录数。 指定 0 以检索开始记录之后的所有记录。
- command
- IDbCommand
IDbCommand执行以填充DataTable对象。
- behavior
- CommandBehavior
其中一个 CommandBehavior 值。
返回
添加到数据表或刷新的行数。
例外
无效 DataSet 。
找不到连接。
注解
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
参数
- dataReader
- IDataReader
IDataReader的名称。
- startRecord
- Int32
要从零开始的记录编号。
- maxRecords
- Int32
要检索的最大记录数。 指定 0 以检索开始记录之后的所有记录。
返回
成功添加到或刷新的 DataSet行数。 这不包括受不返回行的语句影响的行。
例外
注解
maxRecords值为 0 可获取开始记录之后找到的所有记录。 如果 maxRecords 大于剩余行数,则只返回剩余行,并且不会发出任何错误。
适用于
Fill(DataSet, Int32, Int32, String)
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
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
参数
- startRecord
- Int32
要从零开始的记录编号。
- maxRecords
- Int32
要检索的最大记录数。 指定 0 以检索开始记录之后的所有记录。
- srcTable
- String
要用于表映射的源表的名称。
返回
成功添加到或刷新的 DataSet行数。 这不包括受不返回行的语句影响的行。
例外
无效 DataSet 。
找不到连接。
示例
以下示例使用派生类从 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时,必须满足两个条件:
SQL 语句应与最初用于填充该语句的 DataSet语句匹配。
键 列信息 必须存在。
如果存在主键信息,则将协调任何重复行,并且仅显示在对应于该DataSet行的DataTable一次。 主键信息可以通过指定属性或将属性设置为 来设置FillSchemaPrimaryKey。AddWithKeyDataTableMissingSchemaAction
如果 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 以检索开始记录之后的所有记录。
返回
已成功添加到对象或刷新的 DataTable 行数。 此值不包括受不返回行的语句影响的行。
例外
dataTables 是 null 或空数组。
注解
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
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
参数
返回
成功添加到或刷新的 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
参数
- dataReader
- IDataReader
IDataReader的名称。
返回
成功添加到或刷新的 DataTable行数。 这不包括受不返回行的语句影响的行。
适用于
Fill(DataSet, String)
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
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
参数
- 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时,必须满足两个条件:
SQL 语句应与最初用于填充该语句的 DataSet语句匹配。
键 列信息 必须存在。 如果存在主键信息,则会协调任何重复的行,并且仅出现在对应于该DataSet行的DataTable一次。 主键信息可以通过指定属性或将属性设置为 来设置FillSchemaPrimaryKey。
AddWithKeyDataTableMissingSchemaAction
如果 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行数。 这不包括受不返回行的语句影响的行。
实现
注解
该方法 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时,必须满足两个条件:
SQL 语句应与最初用于填充该语句的 DataSet语句匹配。
键 列信息 必须存在。
如果存在主键信息,则会协调任何重复的行,并且仅出现在对应于该DataSet行的DataTable一次。 主键信息可以通过指定属性或将属性设置为 来设置FillSchemaPrimaryKey。AddWithKeyDataTableMissingSchemaAction
如果 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
参数
- 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 数据提供程序使用。