Partilhar via


Dados Unicode

Os tipos de dados Unicode SQL são fornecidos para descrever os dados que residem em Unicode nativamente no DBMS. Um tipo de dados C Unicode é fornecido para permitir a um aplicativo vincular dados a um buffer Unicode. O Gerenciador de Driver pode converter dados de um tipo C Unicode (SQL_C_WCHAR) para fazer com que funcionem com um driver ANSI.

Um aplicativo ODBC 3.0 ou 2.x sempre vai se associar aos tipos de dados ANSI. Para obter o desempenho ideal, um aplicativo ODBC 3.5 (ou superior) deverá se vincular ao tipo C de dados ANSI se o tipo de coluna SQL for ANSI e ao tipo de dados Unicode C se o tipo de coluna SQL for Unicode.

Os indicadores de tipo Unicode do SQL são SQL_WCHAR, SQL_WVARCHAR e SQL_WLONGVARCHAR. Dados SQL_WCHAR tem um comprimento de cadeia de caracteres fixo, enquanto SQL_WVARCHAR tem um comprimento variável com um máximo declarado e SQL_WLONGVARCHAR tem um comprimento variável com um máximo que depende da fonte de dados.

O indicador de tipo C Unicode é SQL_C_WCHAR. Esse é o padrão para cada um dos indicadores de tipo Unicode do SQL. Todos os tipos SQL podem ser convertidos em SQL_C_WCHAR; e SQL_C_WCHAR pode ser convertido em todos os tipos SQL. Um aplicativo pode recuperar dados de três maneiras:

  • Recuperar dados como SQL_C_CHAR.

  • Recuperar dados como SQL_C_WCHAR.

  • Declarar os dados como SQL_C_TCHAR. Essa é uma macro que insere SQL_C_WCHAR se o aplicativo é compilado como um aplicativo Unicode ou insere SQL_C_CHAR se ele é compilado como um aplicativo ANSI.

O SQL_C_TCHAR é declarado em uma função da seguinte maneira:

SQLBindParameter(StatementHandle, 1, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_WCHAR, NameLen, 0, Name, 0, &Name)  

Quando o aplicativo é compilado como um aplicativo Unicode, o argumento ValueType seria alterado de SQL_C_TCHAR para SQL_C_WCHAR. Quando o aplicativo é compilado como um aplicativo ANSI, o argumento ValueType seria alterado para SQL_C_CHAR.

Os drivers Unicode ainda devem oferecer suporte a tipos de dados ANSI, incluindo SQL_CHAR. Se um aplicativo que funciona com um driver Unicode se vincular a SQL_CHAR, o Gerenciador de Driver não mapeará os dados SQL_CHAR para SQL_WCHAR. O driver Unicode deve aceitar os dados SQL_CHAR

O Gerenciador de Driver armazena nomes de driver e DSN em Unicode e os mapeia para ANSI conforme o necessário. Se não for possível mapear um caractere Unicode para um caractere ANSI (como poderá ocorrer se caracteres de uma página de código que não seja a página de código nativa do computador forem usados em nomes de driver e DSN), os caracteres que não puderam ser convertidos serão representados por um caractere padrão fornecido pelo sistema.