Matriz de compatibilidade
A tabela a seguir descreve a compatibilidade dos tipos de aplicativos e drivers definidos anteriormente nesta seção.
Tipo de aplicativo e versão |
ODBC de 32 bits Driver 2.x |
ODBC 3.x driver |
ODBC 3.8 driver | Driver compatível com ISO e Open Group |
---|---|---|---|---|
Aplicativo de 16 bits, qualquer versão | Compatível | Compatível | Compatível | Compatível |
Aplicação 2.x pura | Compatível | Compatível | Compatível | Não compatível[3] |
Aplicativo recompilado Pura 2.x | Compatível | Compatível[1] | Compatível[1] | Não compatível[3] |
Aplicativo Unicode 2.x Pura | Compatível | Compatível[1] | Compatível[1] | Incompatível[3] |
Open Group Pura e aplicativo compatível com ISO | Não compatível | Compatível[2] | Compatível[2] | Compatível[2] |
Aplicativo Pura 3.0 | Não compatível | Compatível | Compatível | Não compatível[4] |
Aplicativo Pura 3.5 | Não compatível | Compatível | Compatível | Não compatível[4] |
Aplicativo 3.8 Pura (ou superior) | Não compatível [5] | Não compatível [5] | Compatível | Não compatível [4] |
Aplicativo substituído | Compatível | Compatível | Compatível | Não compatível[3] |
[1] O aplicativo deve recompilar usando cabeçalhos ODBC 3.5 (ou superior) com a opção UNICODE (se for um aplicativo Unicode) e deve definir ODBCVER como 0x0250.
[2] O aplicativo deve compilar usando cabeçalhos ODBC 3.5 (ou superior) e vincular com o Gerenciador de driver ODBC. Ele também deve definir o sinalizador de cabeçalho ODBC_STD.
[3] Essa configuração pode potencialmente falhar ao funcionar porque há recursos no ODBC 2.x que não estão nos padrões, como marcadores.
[4] Essa configuração pode potencialmente falhar ao funcionar porque há recursos no ODBC 3.x que não estão nos padrões, como marcadores.
[5] Essa configuração pode falhar potencialmente porque há recursos no ODBC 3.8 que não estão em drivers ODBC 2.x ou 3.x, como tipos de dados C específicos do driver no ODBC.
Compatibilidade do Gerenciador de Driver
Um aplicativo ODBC 3.0 que deve operar com todas as versões do Gerenciador de Driver deve fazer o seguinte na inicialização:
Alocar um identificador de ambiente.
Defina o atributo de ambiente SQL_ATTR_ODBC_VERSION como SQL_OV_ODBC3_80. Se o Gerenciador de Driver retornar SQL_ERROR, o Gerenciador de Driver será anterior à versão 3.8. Redefina SQL_ATTR_ODBC_VERSION para SQL_OV_ODBC3 ou SQL_OV_ODBC2, conforme apropriado, para corresponder ao Gerenciador de Drivers.
Alocar um identificador de conexão.
Fazer uma conexão.
Chame SQLGetInfo para SQL_DRIVER_ODBC_VER para determinar a versão do driver. Se o driver for um driver ODBC 3.8, você poderá usar tipos C específicos do driver. Caso contrário, não use tipos de dados C específicos do driver.
Observe que um aplicativo ODBC 3.x recompilado pode usar recursos ODBC 3.8 diferentes de tipos C específicos do driver sem especificar SQL_OV_ODBC3_80 para SQL_ATTR_ODBC_VERSION. Isso é semelhante a um aplicativo ODBC 2.x recompilado usando recursos ODBC 3.x.
Usando SQLCancelHandle em um aplicativo compatível com todos os gerenciadores de driver
Como a função SQLCancelHandle não tem suporte nos gerenciadores de driver lançados antes do Windows 7, um aplicativo não pode ser carregado em versões mais antigas do Windows se ele chamar SQLCancelHandle diretamente. Para trabalhar com todas as versões dos Gerenciadores de Driver e usar SQLCancelHandle em novas versões do Windows, um aplicativo deve chamar SQLCancelHandle indiretamente usando LoadLibrary e GetProcAddress.