Compartilhar via


Alocar o identificador de ambiente

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

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

  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 Driver aloca uma estrutura na qual armazena informações sobre o ambiente e retorna o identificador de ambiente na variável.

O Gerenciador de Driver não chama SQLAllocHandle no driver nesse momento porque não sabe 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 Função do Gerenciador de Driver no processo de conexão, mais adiante nesta seção.

Quando o aplicativo termina de usar o ODBC, ele libera o identificador de ambiente com SQLFreeHandle. Depois de liberar o ambiente, é um erro de programação de aplicativo usar o identificador do ambiente em uma chamada para uma função ODBC; 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 nesse identificador de ambiente tenham sido liberados.

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