Partilhar via


Controladores Unicode

Se um driver deve ser Unicode ou ANSI depende inteiramente da natureza da fonte de dados. Se a fonte de dados suportar dados Unicode, o driver deve ser um driver Unicode. Se a fonte de dados apenas suportar dados ANSI, o driver deve continuar a ser um driver ANSI.

Um driver Unicode deve exportar SQLConnectW para ser reconhecido como controlador Unicode pelo Driver Manager.

Um driver Unicode deve aceitar funções Unicode (com o sufixo W) e armazenar dados Unicode. Também pode aceitar funções ANSI, mas não é obrigatório. (O Gestor de Drivers não passa uma chamada de função ANSI com o sufixo A ao driver, mas converte-a numa chamada de função ANSI sem o sufixo e depois passa para o driver.)

Um driver Unicode deve ser capaz de devolver conjuntos de resultados em Unicode ou ANSI, dependendo da ligação da aplicação. Se uma aplicação se ligar a SQL_C_CHAR, o driver Unicode deve converter os dados SQL_WCHAR para SQL_CHAR. O gestor de drivers mapeia SQL_C_WCHAR para SQL_C_CHAR para drivers ANSI, mas não faz mapeamento para drivers Unicode.

Observação

Ao determinar o tipo de driver, o Driver Manager chama SQLSetConnectAttr e define o atributo SQL_ATTR_ANSI_APP no momento da ligação. Se a aplicação estiver a usar APIs ANSI, SQL_ATTR_ANSI_APP será definida para SQL_AA_TRUE, e se estiver a usar Unicode, será definida para um valor de SQL_AA_FALSE. Este atributo é usado para que o driver possa apresentar comportamentos diferentes consoante o tipo de aplicação. O atributo não pode ser definido diretamente pela aplicação, e não é suportado pelo SQLGetConnectAttr. Se um driver apresentar o mesmo comportamento tanto para aplicações ANSI como Unicode, deverá devolver SQL_ERROR para este atributo. Se o driver devolver SQL_SUCCESS, o Gestor de Drivers irá separar as ligações ANSI e Unicode quando for utilizado o Pool de Conexões.