Partager via


Données Unicode

Les types de données Unicode SQL sont fournis pour décrire les données qui résident dans Unicode en mode natif sur le SGBD. Un type de données Unicode C est fourni pour permettre à une application de lier des données à une mémoire tampon Unicode. Le Gestionnaire de pilotes peut convertir des données à partir d’un type C Unicode (SQL_C_WCHAR) pour qu’elles fonctionnent avec un pilote ANSI.

ODBC 3.0 ou 2.l’application x est toujours liée aux types de données ANSI. Pour optimiser les performances, une application ODBC 3.5 (ou ultérieure) doit être liée au type de données ANSI C si le type de colonne SQL est ANSI et doit être lié au type de données C Unicode si le type de colonne SQL est Unicode.

Les indicateurs de type Unicode SQL sont SQL_WCHAR, SQL_WVARCHAR et SQL_WLONGVARCHAR. SQL_WCHAR données a une longueur de chaîne fixe, tandis que SQL_WVARCHAR a une longueur variable avec une longueur maximale déclarée et SQL_WLONGVARCHAR a une longueur variable avec un maximum qui dépend de la source de données.

L’indicateur de type Unicode C est SQL_C_WCHAR. Il s’agit de la valeur par défaut pour chacun des indicateurs de type Unicode SQL. Tous les types SQL peuvent être convertis en SQL_C_WCHAR, et SQL_C_WCHAR peuvent être convertis en tous les types SQL. Une application peut récupérer des données de l’une des trois manières suivantes :

  • Récupérez les données en tant que SQL_C_CHAR.

  • Récupérez les données en tant que SQL_C_WCHAR.

  • Déclarez les données en tant que SQL_C_TCHAR. Il s’agit d’une macro qui insère SQL_C_WCHAR si l’application est compilée en tant qu’application Unicode ou insère SQL_C_CHAR si elle est compilée en tant qu’application ANSI.

SQL_C_TCHAR est déclaré dans une fonction comme suit :

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

Lorsque l’application est compilée en tant qu’application Unicode, l’argument ValueType passe de SQL_C_TCHAR à SQL_C_WCHAR. Lorsque l’application est compilée en tant qu’application ANSI, l’argument ValueType est remplacé par SQL_C_CHAR.

Les pilotes Unicode doivent toujours prendre en charge les types de données ANSI, y compris les SQL_CHAR. Si une application qui utilise un pilote Unicode est liée à SQL_CHAR, le Gestionnaire de pilotes ne mappe pas les données SQL_CHAR à SQL_WCHAR. Le pilote Unicode doit accepter les données SQL_CHAR.

Le Gestionnaire de pilotes stocke les noms de pilotes et de DSN dans Unicode et les mappe à ANSI selon les besoins. Si un caractère Unicode ne peut pas être mappé à un caractère ANSI (comme cela peut se produire si des caractères d’une page de codes qui n’est pas la page de codes native de l’ordinateur sont utilisés dans les noms de pilote et de DSN), les caractères qui n’ont pas pu être convertis sont représentés par un caractère par défaut fourni par le système.