Compartilhar via


Biblioteca de cursores ODBC

Alguns drivers ODBC dão suporte apenas às configurações de cursor padrão; esses drivers também não dão suporte a operações de cursor posicionadas, como SQLSetPos. A biblioteca de cursores ODBC é um componente do MDAC (Microsoft Data Access Components) usado para implementar cursores estáticos ou em bloco em um driver que, normalmente, não dá suporte a eles. A biblioteca de cursores também implementa instruções UPDATE e DELETE posicionadas e SQLSetPos para os cursores que ela cria.

A biblioteca de cursores ODBC é implementada como uma camada entre o Gerenciador de Driver ODBC e um driver ODBC. Se a biblioteca de cursores ODBC for carregada, o Gerenciador de Driver ODBC roteará todos os comandos relacionados com o cursor à biblioteca em vez do driver. A biblioteca de cursores implementa um cursor buscando o conjunto de resultados inteiro do driver subjacente e armazenando em cache o conjunto de resultados no cliente. Ao usar a biblioteca de cursores ODBC, o aplicativo fica limitado à funcionalidade da biblioteca; qualquer suporte adicional a outras funcionalidades de cursor no driver subjacente não estará disponível para o aplicativo.

Há pouca necessidade de usar a biblioteca de cursores ODBC com o driver ODBC SQL Server Native Client porque o próprio driver dá suporte a mais funcionalidade de cursor do que a biblioteca de cursores ODBC. O único motivo para usar a biblioteca de cursores ODBC com o driver ODBC SQL Server Native Client é porque o driver implementa o suporte ao cursor por meio de cursores de servidor e os cursores de servidor não dão suporte a todas as instruções SQL. Sempre que houver necessidade de ter um cursor estático com procedimentos armazenados, lotes ou instruções SQL que contêm COMPUTE, COMPUTE BY, FOR BROWSE ou INTO, é recomendável usar a biblioteca de cursores ODBC. No entanto, é preciso ter cuidado ao usar a biblioteca de cursores porque ela armazena no cache do cliente o conjunto de resultados inteiro, o que pode alocar muita memória e prejudicar o desempenho.

Um aplicativo invoca a biblioteca de cursores em uma base de conexão por conexão usando SQLSetConnectAttr para definir o atributo de conexão SQL_ATTR_ODBC_CURSORS antes de se conectar a uma fonte de dados. SQL_ATTR_ODBC_CURSORS é definido como um destes três valores:

SQL_CUR_USE_ODBC
Quando essa opção é definida com o driver ODBC SQL Server Native Client, a biblioteca de cursores ODBC substitui o SQL Server Native Client suporte ao cursor nativo do driver ODBC. Somente os tipos de cursor suportados pela biblioteca de cursores podem ser usados para a conexão; cursores de servidor não podem ser usados.

SQL_CUR_USE_DRIVER
Quando essa opção é definida, todo o cursor dá suporte nativo ao SQL Server Native Client driver ODBC pode ser usado para a conexão. A biblioteca de cursores ODBC não pode ser usada. Todos os cursores são implementados como cursores de servidor.

SQL_CUR_USE_IF_NEEDED
Quando essa opção é definida, o efeito é o mesmo que SQL_CUR_USE_DRIVER quando usado com o driver ODBC SQL Server Native Client. No momento da conexão, o Gerenciador de Driver ODBC testa se o driver ODBC que está sendo conectado dá suporte à opção SQL_FETCH_PRIOR de SQLFetchScroll. Se o driver não der suporte à opção, o Gerenciador de Driver ODBC carregará a biblioteca de cursores ODBC. Se o driver der suporte à opção, o Gerenciador não carregará a biblioteca de cursores ODBC e o aplicativo usará o suporte nativo do driver. Como o driver ODBC SQL Server Native Client dá suporte a SQL_FETCH_PRIOR, o Gerenciador de Driver ODBC não carrega a biblioteca de cursores ODBC.

A biblioteca de cursores permite que os aplicativos usem várias instruções ativas em uma conexão, assim como cursores roláveis e atualizáveis. A biblioteca de cursores deve ser carregada para dar suporte a essa funcionalidade. Use SQLSetConnectAttr para especificar como a biblioteca de cursores deve ser usada e SQLSetStmtAttr para especificar o tipo de cursor, a simultaneidade e o tamanho do conjunto de linhas.

Consulte Também

Como os cursores são implementados