Declarar a versão ODBC do aplicativo
Antes de um aplicativo alocar uma conexão, ele deve definir o atributo de ambiente SQL_ATTR_ODBC_VERSION. Esse atributo afirma que o aplicativo segue a especificação ODBC 2.x ou ODBC 3.x ao usar os seguintes itens:
SQLSTATEs. Muitos valores SQLSTATE são diferentes no ODBC 2.x e ODBC 3.x.
Identificadores de tipo de data, hora e carimbo de data/hora. A tabela a seguir mostra os identificadores de tipo para dados de data, hora e carimbo de data/hora em ODBC 2.x e ODBC 3.x.
ODBC 2.x ODBC 3.x Identificadores de tipo SQL SQL_DATE SQL_TYPE_DATE SQL_TIME SQL_TYPE_TIME SQL_TIMESTAMP SQL_TYPE_TIMESTAMP Identificadores de tipo C SQL_C_DATE SQL_C_TYPE_DATE SQL_C_TIME SQL_C_TYPE_TIME SQL_C_TIMESTAMP SQL_C_TYPE_TIMESTAMP CatalogName Argumento em tabelas de SQL. No ODBC 2.x, os caracteres curinga ("%" e "_") no argumento CatalogName são tratados literalmente. No ODBC 3.x, eles são tratados como caracteres curinga. Assim, um aplicativo que segue a especificação ODBC 2.x não pode usá-los como caracteres curinga e não escapa deles ao usá-los como literais. Um aplicativo que segue a especificação ODBC 3.x pode usá-los como caracteres curinga ou escapar deles e usá-los como literais. Para obter mais informações, confira Argumentos em funções de catálogo.
O Gerenciador de driver ODBC 3.x e os drivers ODBC 3.x verificam a versão da especificação ODBC na qual um aplicativo é gravado e respondem de acordo. Por exemplo, se o aplicativo seguir a especificação ODBC 2.x e chamar SQLExecute antes de chamar SQLPrepare, o Gerenciador de Driver ODBC 3.x retornará SQLSTATE S1010 (erro de sequência de função). Se o aplicativo seguir a especificação ODBC 3.x , o Gerenciador de Driver retornará SQLSTATE HY010 (erro de sequência de função). Para obter mais informações, consulte Compatibilidade com versões anteriores e conformidade com padrões.
Importante
Os aplicativos que seguem a especificação ODBC 3.x devem usar código condicional para evitar o uso de funcionalidades novas para ODBC 3.x ao trabalhar com drivers ODBC 2.x. Os drivers ODBC 2.x não oferecem suporte à funcionalidade nova para ODBC 3.x apenas porque o aplicativo declara que segue a especificação ODBC 3.x. Além disso, os drivers ODBC 3.x não deixam de oferecer suporte à funcionalidade nova para ODBC 3.x apenas porque o aplicativo declara que segue a especificação ODBC 2.x.