Partilhar via


O que o Gerenciador de Driver faz

A tabela a seguir resume como o Gerenciador de Driver ODBC 3.x mapeia chamadas para drivers ODBC 2.x e ODBC 3.x .

Função ou

atributo de instrução
Comentários
SQL_ATTR_FETCH_BOOKMARK_PTR Aponta para o indicador a ser usado com SQLFetchScroll. Veja a seguir os detalhes da implementação:

- Quando um aplicativo define isso em um driver ODBC 2.x , o Gerenciador de Driver ODBC 3.x o armazena em cache. Ele desreferencia o ponteiro e passa o valor para o driver ODBC 2.x no argumento FetchOffset de SQLExtendedFetch quando SQLFetchScroll é chamado posteriormente pelo aplicativo.
- Quando um aplicativo define isso em um driver ODBC 3.x , o Gerenciador de Driver ODBC 3.x passa a chamada para o driver.
SQL_ATTR_ROW_STATUS_PTR Aponta para a matriz de status de linha preenchida por SQLFetch, SQLFetchScroll, SQLBulkOperations e SQLSetPos. Veja a seguir os detalhes da implementação:

- Quando um aplicativo define isso em um driver ODBC 2.x , o Gerenciador de Driver ODBC 3.x armazena em cache seu valor. Ele passa esse valor para o driver ODBC 2.x no argumento RowStatusArray de SQLExtendedFetch quando SQLFetchScroll ou SQLFetch é chamado.
- Quando um aplicativo define isso em um driver ODBC 3.x , o Gerenciador de Driver ODBC 3.x passa a chamada para o driver.
- No estado S6, se um aplicativo definir SQL_ATTR_ROW_STATUS_PTR e, em seguida, chamar SQLBulkOperations (com uma Operação de SQL_ADD) ou SQLSetPos sem primeiro chamar SQLFetch ou SQLFetchScroll, SQLSTATE HY011 (o atributo não pode ser definido agora) será retornado.
SQL_ATTR_ROWS_FETCHED_PTR Aponta para o buffer no qual SQLFetch e SQLFetchScroll retornam o número de linhas buscadas. Veja a seguir os detalhes da implementação:

- Quando um aplicativo define isso em um driver ODBC 2.x , o Gerenciador de Driver ODBC 3.x armazena em cache seu valor. Ele passa esse valor para o driver ODBC 2.x no argumento RowCountPtr de SQLExtendedFetch quando SQLFetch ou SQLFetchScroll é chamado pelo aplicativo.
- Quando um aplicativo define isso em um driver ODBC 3.x , o Gerenciador de Driver ODBC 3.x passa a chamada para o driver.
SQL_ATTR_ROW_ARRAY_SIZE Define o tamanho do conjunto de linhas. Veja a seguir os detalhes da implementação:

- Quando um aplicativo define isso em um driver ODBC 2.x , o Gerenciador de Driver ODBC 3.x o mapeia para o atributo de instrução SQL_ROWSET_SIZE.
- Quando um aplicativo define isso em um driver ODBC 3.x , o Gerenciador de Driver ODBC 3.x passa a chamada para o driver.
- Quando um aplicativo que trabalha com um driver ODBC 3.x chama SQLSetScrollOptions, SQL_ROWSET_SIZE é definido como o valor no argumento RowsetSize se o driver subjacente não dá suporte a SQLSetScrollOptions.
SQL_ROWSET_SIZE Define o tamanho do conjunto de linhas usado por SQLExtendedFetch quando SQLExtendedFetch é chamado por um aplicativo ODBC 2.x . Veja a seguir os detalhes da implementação:

- Quando um aplicativo define isso, o Gerenciador de Driver ODBC 3.x passa a chamada para o driver, independentemente da versão do driver.
- Quando um aplicativo que trabalha com um driver ODBC 2.x chama SQLSetScrollOptions, SQL_ROWSET_SIZE é definido como o valor no argumento RowsetSize .
SQLBulkOperations Executa uma operação de inserção ou atualização, exclusão ou busca por operações de indicador. Veja a seguir os detalhes da implementação:

- Quando um aplicativo chama SQLBulkOperations com uma operação de SQL_ADD em um driver ODBC 2.x , o Gerenciador de Driver ODBC 3.x o mapeia para SQLSetPos com uma operação de SQL_ADD.
– Ao trabalhar com um driver ODBC 2.x que não dá suporte a SQLSetPos com uma operação de SQL_ADD, o Gerenciador de Driver ODBC 3.x não mapeia SQLSetPos com uma operação de SQL_ADD para SQLBulkOperations com uma operação de SQL_ADD. Isso ocorre porque SQLBulkOperations não pode ser chamado no estado S7, que no ODBC 2.x era o único estado no qual SQLSetPos poderia ser chamado.
– Se o aplicativo chamar SQLBulkOperations com uma Operação de SQL_ADD em um driver ODBC 2.x antes de chamar SQLFetchScroll, o Gerenciador de Driver ODBC 3.x retornará um erro.
Sqlextendedfetch Retorna o conjunto de linhas especificado. Exceto pela restrição que acabou de ser observada, o Gerenciador de Driver ODBC 3.x passa chamadas para SQLExtendedFetch para o driver, independentemente da versão do driver.
SQLFetch Retorna o próximo conjunto de linhas. Veja a seguir os detalhes da implementação:

- Quando um aplicativo chama SQLFetch em um driver ODBC 2.x , o Gerenciador de Driver ODBC 3.x o mapeia para SQLExtendedFetch. O argumento FetchOrientation de SQLExtendedFetch é definido como SQL_FETCH_NEXT. O Gerenciador de Driver usa o valor armazenado em cache do atributo de instrução SQL_ATTR_ROW_STATUS_PTR para o argumento RowStatusArray e o valor armazenado em cache do atributo de instrução SQL_ATTR_ROWS_FETCHED_PTR para o argumento RowCountPtr .
– Um aplicativo ODBC 3.x pode misturar chamadas para SQLFetch e SQLFetchScroll em um driver ODBC 2.x porque o Gerenciador de Driver ODBC 3.xmapeia SQLFetch para SQLExtendedFetch quando um aplicativo o chama em um driver ODBC 2.x .
- Se um driver ODBC 2.x não der suporte a SQLExtendedFetch, o Gerenciador de Driver ODBC 3.x não mapeará SQLFetch ou SQLFetchScroll para SQLExtendedFetch quando um aplicativo o chamar nesse driver. Se o aplicativo tentar definir SQL_ATTR_ROW_ARRAY_SIZE para um valor maior que 1, SQLSTATE HYC00 (recurso opcional não implementado) será retornado.
- Exceto pelas restrições que acabou de ser observadas, o Gerenciador de Driver ODBC 3.x passa chamadas para SQLFetch para o driver, independentemente da versão do driver.
SQLFetchScroll Retorna o conjunto de linhas especificado. Veja a seguir os detalhes da implementação:

- Quando um aplicativo chama SQLFetchScroll em um driver ODBC 2.x , o Gerenciador de Driver ODBC 3.x o mapeia para SQLExtendedFetch. Ele usa o valor armazenado em cache do atributo de instrução SQL_ATTR_ROW_STATUS_PTR para o argumento RowStatusArray e o valor armazenado em cache do atributo de instrução SQL_ATTR_ROWS_FETCHED_PTR para o argumento RowCountPtr . Se o argumento FetchOrientation no SQLFetchScroll for SQL_FETCH_BOOKMARK, ele usará o valor armazenado em cache do atributo de instrução SQL_ATTR_FETCH_BOOKMARK_PTR para o argumento FetchOffset e retornará um erro se o argumento FetchOffset de SQLFetchScroll não for 0.
- Quando um aplicativo chama isso em um driver ODBC 3.x , o Gerenciador de Driver ODBC 3.x passa a chamada para o driver.
SQLSetPos Executa várias operações posicionadas. O Gerenciador de Driver ODBC 3.x passa chamadas para SQLSetPos para o driver, independentemente da versão do driver.
SQLSetScrollOptions Quando o Gerenciador de Driver mapeia SQLSetScrollOptions para um aplicativo que trabalha com um driver ODBC 3.x que não dá suporte a SQLSetScrollOptions, o Gerenciador de Driver define a opção de instrução SQL_ROWSET_SIZE, não o atributo de instrução SQL_ATTR_ROW_ARRAY_SIZE, para o argumento RowsetSize em SQLSetScrollOption. Como resultado, SQLSetScrollOptions não pode ser usado por um aplicativo ao buscar várias linhas por uma chamada para SQLFetch ou SQLFetchScroll. Ele só pode ser usado ao buscar várias linhas por uma chamada para SQLExtendedFetch.