O Gerenciador de Driver
O Gerenciador de Driver é uma biblioteca que gerencia a comunicação entre aplicativos e drivers. Por exemplo, nas plataformas Microsoft Windows, o Gerenciador de Driver é uma DLL (biblioteca de vínculo dinâmico) escrita pela Microsoft e pode ser redistribuída por usuários do SDK redistribuível do MDAC 2.8 SP1.
O Gerenciador de Driver existe principalmente como uma conveniência para os criadores de aplicativos e resolve uma série de problemas comuns a todos os aplicativos. Isso inclui determinar qual driver carregar com base no nome da fonte de dados, carregar e descarregar drivers e chamar funções nos drivers.
Para saber por que o último item é um problema, considere o que aconteceria se o aplicativo chamasse funções diretamente no driver. A menos que o aplicativo estivesse vinculado diretamente a um driver específico, ele teria que criar uma tabela de ponteiros para as funções desse driver e chamar essas funções por ponteiro. Usar o mesmo código para obter mais de um driver ao mesmo tempo adicionaria outro nível de complexidade. Primeiro, o aplicativo teria que definir um ponteiro de função para apontar para a função correta no driver correto e chamar a função por meio desse ponteiro.
O Gerenciador de Driver resolve esse problema fornecendo um único local para chamar cada função. O aplicativo está vinculado ao Gerenciador de Driver e chama funções ODBC no Gerenciador de Driver, não no driver. O aplicativo identifica o driver de destino e a fonte de dados com um identificador de conexão. Ao carregar um driver, o Gerenciador de Driver cria uma tabela de ponteiros para as funções desse driver. Ele usa o identificador de conexão passado pelo aplicativo para localizar o endereço da função no driver de destino e chama essa função por endereço.
Na maioria das vezes, o Gerenciador de Driver apenas passa chamadas de função do aplicativo para o driver correto. No entanto, ele também implementa algumas funções (SQLDataSources, SQLDrivers e SQLGetFunctions) e executa a verificação básica de erros. Por exemplo, o Gerenciador de Driver verifica se os identificadores não são ponteiros nulos, se as funções são chamadas na ordem correta e se determinados argumentos de função são válidos. Para obter uma descrição completa dos erros verificados pelo Gerenciador de Driver, consulte a seção de referência de cada função e o Apêndice B: Tabelas de transição de estado ODBC.
A última função principal do Gerenciador de Driver é carregar e descarregar drivers. O aplicativo carrega e descarrega apenas o Gerenciador de Driver. Quando deseja usar um driver específico, ele chama uma função de conexão (SQLConnect, SQLDriverConnect ou SQLBrowseConnect) no Gerenciador de Driver e especifica o nome de um driver específico. fonte de dados ou driver específico, como "Contabilidade" ou "SQL Server". Usando esse nome, o Gerenciador de Driver pesquisa nas informações da fonte de dados o nome do arquivo do driver, como Sqlsrvr.dll. Em seguida, ele carrega o driver (supondo que ainda não esteja carregado), armazena o endereço de cada função no driver e chama a função de conexão no driver, que então se inicializa e se conecta à fonte de dados.
Quando o aplicativo termina de usar o driver, ele chama SQLDisconnect no Gerenciador de Driver. O Gerenciador de Driver chama essa função no driver, que se desconecta da fonte de dados. Porém, o Gerenciador de Driver mantém o driver na memória, caso o aplicativo se reconecte a ele. Ele descarrega o driver somente quando o aplicativo libera a conexão usada pelo driver ou usa a conexão para um driver diferente e nenhuma outra conexão usa o driver. Para obter uma descrição completa da função do Gerenciador de Driver no carregamento e descarregamento de drivers, consulte Função do Gerenciador de Driver no Processo de Conexão.