分页关键DbDataAdapter.Fill(DataSet, int startRecord, int maxRecords)

来源:互联网 发布:美国进出口数据公布 编辑:程序博客网 时间:2024/05/22 16:20

使用 DataSet 和源表名称、命令字符串以及命令行为,在 DataSet 的指定范围中添加或刷新某些行以使它们与数据源中对应的行相一致。

protected virtual int Fill(  DataSet dataSet,  int startRecord,  int maxRecords,  string srcTable,  IDbCommand command,  CommandBehavior behavior );

参数

dataSet
要用记录和架构(如果必要)填充的 DataSet
startRecord
从其开始的从零开始的记录号。
maxRecords
要检索的最大记录数。
srcTable
用于表映射的源表的名称。
command
用于从数据源中检索行的 SQL SELECT 语句。
behavior
CommandBehavior 值之一。

返回值

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

异常

异常类型条件
InvalidOperationException源表无效。
ArgumentExceptionstartRecord 参数小于 0。

- 或 -

maxRecords 参数小于 0。

备注

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

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

如果 DbDataAdapter 在填充 DataTable 时遇到重复列,它将以“columnname1”、“columnname2”、“columnname3”这种模式命名后面的列。如果传入数据包含未命名的列,它们将按“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.

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

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

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

对实施者的说明:   Fill 方法的此重载是受保护的,供 .NET Framework 数据提供程序使用。

要求

平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版 - Windows CE .NET

请参见

DbDataAdapter 类 | DbDataAdapter 成员 | System.Data.Common 命名空间 | DbDataAdapter.Fill 重载列表 | FillSchema | DbDataAdapter 成员(Visual J# 语法) | C++ 托管扩展编程 

原创粉丝点击