某些 ODBC 驱动程序仅支持默认游标设置;这些驱动程序也不支持定位游标作,例如 SQLSetPos。 ODBC 游标库是Microsoft数据访问组件(MDAC)的一个组件,用于在通常不支持它们的驱动程序上实现块或静态游标。 游标库还实现其创建的游标的定位 UPDATE 和 DELETE 语句和 SQLSetPos 。
ODBC 游标库作为 ODBC 驱动程序管理器和 ODBC 驱动程序之间的层实现。 如果加载 ODBC 游标库,ODBC 驱动程序管理器会将所有与游标相关的命令路由到游标库而不是驱动程序。 游标库通过从基础驱动程序提取整个结果集并在客户端上缓存结果集来实现游标。 使用 ODBC 游标库时,应用程序仅限于游标库的游标功能;基础驱动程序中对其他游标功能的任何支持都不适用于应用程序。
无需将 ODBC 游标库与 SQL Server Native Client ODBC 驱动程序配合使用,因为驱动程序本身支持的游标功能比 ODBC 游标库多。 将 ODBC 游标库用于 SQL Server Native Client ODBC 驱动程序的唯一原因是驱动程序通过服务器游标实现其游标支持,并且服务器游标不支持所有 SQL 语句。 每当需要具有包含 COMPUTE、COMPUTE BY、FOR BROWSE 或 INTO 的存储过程、批处理或 SQL 语句的静态游标时,请考虑使用 ODBC 游标库。 但是,必须谨慎与游标库一起使用,因为它缓存客户端上的整个结果集,这可以使用大量的内存和性能缓慢。
应用程序通过使用 SQLSetConnectAttr 在连接到数据源之前设置SQL_ATTR_ODBC_CURSORS连接属性,以逐个连接方式调用游标库。 SQL_ATTR_ODBC_CURSORS设置为以下三个值之一:
SQL_CUR_USE_ODBC
使用 SQL Server Native Client ODBC 驱动程序设置此选项时,ODBC 游标库将替代 SQL Server Native Client ODBC 驱动程序的本机游标支持。 只有游标库支持的游标类型才能用于连接;不能使用服务器游标。
SQL_CUR_USE_DRIVER
设置此选项后,所有游标都支持本机到 SQL Server Native Client ODBC 驱动程序,可用于连接。 不能使用 ODBC 游标库。 所有游标都作为服务器游标实现。
SQL_CUR_USE_IF_NEEDED
设置此选项时,效果与与 SQL Server Native Client ODBC 驱动程序一起使用时SQL_CUR_USE_DRIVER相同。 在连接时,ODBC 驱动程序管理器测试是否连接到 ODBC 驱动程序支持 SQLFetchScroll 的 SQL_FETCH_PRIOR 选项。 如果驱动程序不支持此选项,ODBC 驱动程序管理器将加载 ODBC 游标库。 如果驱动程序支持此选项,ODBC 驱动程序管理器不会加载 ODBC 游标库,并且应用程序使用驱动程序的本机支持。 由于 SQL Server Native Client ODBC 驱动程序支持SQL_FETCH_PRIOR,因此 ODBC 驱动程序管理器不会加载 ODBC 游标库。
游标库允许应用程序对连接使用多个活动语句,以及可滚动的可更新游标。 必须加载游标库才能支持此功能。 使用 SQLSetConnectAttr 指定应如何使用游标库, 使用 SQLSetStmtAttr 指定游标类型、并发性和行集大小。