Compartilhar via


Dados Unicode

Os tipos de dados Unicode do SQL são fornecidos para descrever dados que residem no Unicode nativamente no DBMS. Um tipo de dados C Unicode é fornecido para permitir que um aplicativo associe dados a um buffer Unicode. O Gerenciador de Driver pode converter dados de um tipo Unicode C (SQL_C_WCHAR) para torná-los funcionar com um driver ANSI.

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

Os indicadores de tipo Unicode do SQL são SQL_WCHAR, SQL_WVARCHAR e SQL_WLONGVARCHAR. SQL_WCHAR dados 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 podem ser convertidos em todos os tipos SQL. Um aplicativo pode recuperar dados de uma das três maneiras:

  • Recupere os dados como SQL_C_CHAR.

  • Recupere os dados como SQL_C_WCHAR.

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

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 dar suporte a tipos de dados ANSI, incluindo SQL_CHAR. Se um aplicativo que trabalha com um driver Unicode se associar a SQL_CHAR, o Gerenciador de Driver não mapeará os dados de SQL_CHAR para SQL_WCHAR. O driver Unicode deve aceitar os dados SQL_CHAR.

O Gerenciador de Driver armazena nomes de driver e DSN no Unicode e os mapeia para ANSI conforme necessário. Se um caractere Unicode não puder ser mapeado para um caractere ANSI (como pode ocorrer se caracteres de uma página de código que não é a página de código nativo 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.