Поделиться через


Библиотека курсоров ODBC

Некоторые драйверы ODBC поддерживают только параметры курсора по умолчанию; эти драйверы также не поддерживают позиционированных операций с курсором, таких как SQLSetPos. Библиотека курсоров ODBC — компонент доступа к данным (MDAC), используемый для реализации блочных или статических курсоров на драйвере, который обычно не поддерживает их. Библиотека курсоров также реализует позиционированные инструкции UPDATE и DELETE и SQLSetPos для создаваемых курсоров.

Библиотека курсоров ODBC реализована как уровень между диспетчером драйверов ODBC и драйвером ODBC. Если библиотека курсоров ODBC загружена, диспетчер драйверов ODBC направляет все относящиеся к курсору команды в библиотеку курсоров, а не драйвер. Библиотека курсоров реализует курсор путем выборки целого результирующего набора из базового драйвера и кэширования результирующего набора на клиенте. При использовании библиотеки курсоров ODBC приложение ограничено функциональностью курсора для библиотеки курсоров; любая дополнительная функциональность базового драйвера недоступна для приложения.

Нет необходимости использовать библиотеку курсоров ODBC с драйвером ODBC для собственного клиента SQL Server, так как сам драйвер обеспечивает более широкую функциональность курсора, чем библиотека курсоров ODBC. Единственная причина для использования библиотеки курсоров ODBC с драйвером ODBC для собственного клиента SQL Server заключается в том, что драйвер поддерживает курсор через серверные курсоры, а серверные курсоры не поддерживают все инструкции SQL. Всегда, когда необходимо иметь статический курсор с хранимыми процедурами, пакетами или инструкциями SQL, содержащими предложение COMPUTE, COMPUTE BY, FOR BROWSE или INTO, попробуйте использовать библиотеку курсоров ODBC. Однако, при использовании библиотеки курсоров необходима осмотрительность, так как кэширование всего результирующего набора на клиенте может потребовать большого объема памяти и снизить производительность.

Приложение вызывает библиотеку курсоров для отдельных соединений, используя SQLSetConnectAttr, чтобы установить атрибут соединения SQL_ATTR_ODBC_CURSORS до соединения с источником данных. SQL_ATTR_ODBC_CURSORS устанавливается в одно из трех значений:

  • SQL_CUR_USE_ODBC
    Если этот параметр установлен с помощью драйвера ODBC для собственного клиента SQL Server, библиотека курсоров ODBC переопределяет собственную поддержку курсора драйвера ODBC для собственного клиента SQL Server. Только типы курсора, поддерживаемые библиотекой курсоров, могут быть использованы для соединения; серверные курсоры не могут быть использованы.

  • SQL_CUR_USE_DRIVER
    Когда установлен этот параметр, вся собственная функциональность курсора драйвера ODBC для собственного клиента SQL Server может использоваться для соединения. Библиотека курсоров ODBC не может быть использована. Все курсоры реализованы как серверные курсоры.

  • SQL_CUR_USE_IF_NEEDED
    Когда установлен этот параметр, эффект тот же, как при использовании SQL_CUR_USE_DRIVER с драйвером ODBC для собственного клиента SQL Server. Во время подключения диспетчер драйверов ODBC проверяет, что драйвер ODBC, с которым устанавливается соединение, поддерживает параметр SQL_FETCH_PRIOR функции SQLFetchScroll. Если драйвер не поддерживает параметр, диспетчер драйверов ODBC загружает библиотеку курсоров ODBC. Если драйвер поддерживает параметр, диспетчер драйверов ODBC не загружает библиотеку курсоров ODBC, и приложение использует собственную поддержку драйвера. Поскольку драйвер ODBC для собственного клиента SQL Server поддерживает SQL_FETCH_PRIOR, диспетчер драйверов ODBC не загружает библиотеку курсоров ODBC.

Библиотека курсоров ODBC позволяет приложениям использовать несколько активных инструкций для соединения, а также прокручиваемые, обновляемые курсоры. Библиотека курсоров должна быть загружена для поддержки этой функциональности. Используйте SQLSetConnectAttr, чтобы указать способ использования библиотеки курсоров, и SQLSetStmtAttr, чтобы указать тип курсора, параллелизм и размер набора строк.