Compartilhar via


Alocar o identificador de ambiente

A primeira tarefa para qualquer aplicativo ODBC é carregar o Gerenciador de Driver; como isso é feito depende do sistema operacional. Por exemplo, em um computador que executa o Microsoft Windows NT Server/Windows 2000 Server, o Windows NT Workstation/Windows 2000 Professional ou o Microsoft Windows 95/98, o aplicativo é vinculado à biblioteca do Gerenciador de Driver ou chama LoadLibrary para carregar a DLL do Gerenciador de Driver.

A próxima tarefa, que deve ser feita antes que um aplicativo possa chamar qualquer outra função ODBC, é inicializar o ambiente ODBC e alocar um identificador de ambiente, da seguinte maneira:

  1. O aplicativo declara uma variável do tipo SQLHENV. Em seguida, ele chama SQLAllocHandle e passa o endereço dessa variável e a opção SQL_HANDLE_ENV. Por exemplo:

    SQLHENV henv1;  
    
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv1);  
    
  2. O Gerenciador de Drivers aloca uma estrutura para armazenar informações sobre o ambiente e retorna o identificador do ambiente na variável.

O Gerenciador de Driver não chama SQLAllocHandle no driver no momento porque não sabe para qual driver chamar. Ele atrasa a chamada de SQLAllocHandle no driver até que o aplicativo chame uma função para se conectar a uma fonte de dados. Para obter mais informações, consulte a função do Gerenciador de Driver no processo de conexão, mais adiante nesta seção.

Quando o aplicativo terminar de usar o ODBC, ele libera o identificador de ambiente com SQLFreeHandle. Depois de liberar o ambiente, é um erro de programação do aplicativo usar o identificador do ambiente em uma chamada para uma função ODBC; fazer isso tem consequências indefinidas, mas provavelmente fatais.

Quando SQLFreeHandle é chamado, o driver libera a estrutura usada para armazenar informações sobre o ambiente. Observe que SQLFreeHandle não pode ser chamado para um identificador de ambiente até que todos os identificadores de conexão desse identificador de ambiente tenham sido liberados.

Para obter mais informações sobre o identificador de ambiente, consulte Identificadores de Ambiente.