Notas sobre o Release


40.9 Apêndice C. DB2 CLI e ODBC

Esta é uma nova seção incluída nesse apêndice.

40.9.1 Aplicativos Unicode do ODBC

Um aplicativo Unicode do ODBC envia e recupera dados de caractere primeiramente no UCS-2. Isso é feito chamando as versões Unicode das funções ODBC (aquelas com um sufixo 'W') e indicando tipos de dados Unicode. O aplicativo não especifica explicitamente uma página de código local. Ela ainda pode chamar as funções ANSI e passar as cadeias da página de código local.

Por exemplo, o aplicativo pode chamar SQLConnectW() e passar o DSN, o ID do Usuário e a Senha como argumentos do Unicode. Então, ela pode chamar SQLExecDirectW() e passar uma cadeia de instrução SQL do Unicode e vincular uma combinação de buffers da página de código local ANSI (SQL_C_CHAR) e de buffers Unicode (SQL_C_WCHAR). Os tipos de dados do banco de dados podem ser uma página de código local ou o UCS-2 e o UTF-8.

Se um aplicativo CLI chamar SQLConnectW ou chamar SQLSetConnectAttr com SQL_ATTR_ANSI_APP definido para SQL_AA_FALSE, o aplicativo será considerado um aplicativo Unicode. Isso significa que todos os dados CHAR serão enviados e recebidos do banco de dados no formato UTF-8. O aplicativo poderá então buscar os dados CHAR nos buffers SQL_C_CHAR na página de código local (com possível perda de dados) ou nos buffers SQL_C_WCHAR no UCS-2 sem perda de dados.

Se o aplicativo não fizer nenhuma das duas chamadas anteriores, os dados CHAR serão convertidos para a página de códigos local dos aplicativos no servidor. Isso significa que os dados CHAR buscados em SQL_C_WCHAR poderão sofrer perda de dados.

Se a variável de instância DB2CODEPAGE for definida (utilizando db2set) para a página de código 1208 (UTF-8), o aplicativo receberá todos os dados CHAR em UTF-8, porque essa é agora a página de código local. O aplicativo também deve assegurar que todos os dados de entrada CHAR também estejam em UTF-8. O ODBC também assume que todos os dados SQL_C_WCHAR estão no formato endian nativo. A CLI executará toda a reversão de bytes requerida para SQL_C_WCHAR.

40.9.1.1 Aplicativos Unicode Versus Não-Unicode do ODBC

Este release do DB2 Universal Database contém a APISQLConnectW(). Um driver Unicode deve exportar SQLConnectW para ser reconhecido como um driver Unicode pelo gerenciador de driver. É importante observar que muitos aplicativos ODBC (como o Microsoft Access e o Visual Basic) chamam SQLConnectW(). Em releases anteriores do DB2 Universal Database, o DB2 CLI não suportava essa API e, portanto, não era reconhecido como um driver Unicode pelo gerenciador de driver ODBC. Isso fazia com que o gerenciador de driver ODBC convertesse todos os dados Unicode para a página de código local do aplicativo. Com o suporte incluído da função SQLConnectW(), esses aplicativos agora serão conectados como aplicativos Unicode e o DB2 CLI cuidará de todas as conversões de dados necessárias.

O DB2 CLI agora aceita APIs Unicode (com um sufixo "W") e APIs ANSI comuns. O ODBC define um conjunto de funções com um sufixo "A", mas o gerenciador de driver não passa funções ANSI com o sufixo "A" para o driver. Ao invés disso, ele converte essas funções para chamadas de função ANSI sem o sufixo e, então, as passa ao driver.

Um aplicativo ODBC que chama a API SQLConnectW() é considerado um aplicativo Unicode. Como o gerenciador de driver ODBC sempre chamará a API SQLConnectW() independente da versão do aplicativo chamado, o ODBC introduziu o atributo de conexão SQL_ATTR_ANSI_APP para notificar a unidade, se o aplicativo precisar ser considerado um aplicativo ANSI ou UNICODE. Se SQL_ATTR_ANSI_APP não for definido para SQL_AA_FALSE, o DB2 CLI converterá todos os dados Unicode para a página de código local antes de enviá-los ao servidor.


[ Início da Página | Página Anterior | Próxima Página | Índice | Índice Remissivo ]