行集大小

要使用的行集大小取决于应用程序。 基于屏幕的应用程序通常遵循两种策略之一。 第一个是将行集大小设置为屏幕上显示的行数;如果用户调整屏幕大小,应用程序会相应地更改行集大小。 第二种是将行集大小设置为更大的数字,例如 100,这可以减少对数据源的调用数。 应用程序会尽可能在数据行集中进行本地滚动,并且仅在滚动超出行集时才获取新行。

其他应用程序(如报表)往往将行集大小设置为应用程序可以合理处理的行数(对于较大的行集,有时会减少每行的网络开销)。 行集的大小取决于每一行的大小和可用内存量。

行集大小通过调用SQLSetStmtAttr,使用SQL_ATTR_ROW_ARRAY_SIZE属性参数来设置。 应用程序可以更改行集大小、绑定新的行集缓冲区(通过调用 SQLBindCol 或指定绑定偏移量),即使在已经提取行之后,这两个操作也可以独立或同时进行。 更改行集大小的影响取决于函数:

  • SQLFetchSQLFetchScroll 在调用时使用行集大小来确定要提取的行数。 但是,SQLFetchScrollFetchOrientation SQL_FETCH_NEXT 根据上一次提取的结果集,游标进行递增,然后根据当前行集大小提取行集。

  • SQLSetPos 使用对 SQLFetchSQLFetchScroll 的前一次调用时生效的行集大小,因为 SQLSetPos 对已设置的行集进行操作。 如果更改了行集大小并调用了 SQLBulkOperationsSQLSetPos 也将更新为新的行集大小。

  • SQLBulkOperations 在调用时使用当前行集大小,因为它是在独立于任何已提取的行集的表上执行操作。