Condividi tramite


Dati Unicode

I tipi di dati Unicode SQL vengono forniti per descrivere i dati che risiedono in Unicode in modo nativo sul DBMS. Viene fornito un tipo di dati Unicode C per consentire a un'applicazione di associare dati a un buffer Unicode. Gestione driver può convertire i dati da un tipo C Unicode (SQL_C_WCHAR) per farli funzionare con un driver ANSI.

Un’applicazione ODBC 3.0 o 2.x verrà sempre associata ai tipi di dati ANSI. Per prestazioni ottimali, un'applicazione ODBC 3.5 (o versione successiva) deve essere associata al tipo C di dati ANSI se il tipo di colonna SQL è ANSI e deve essere associata al tipo di dati Unicode C se il tipo di colonna SQL è Unicode.

Gli indicatori di tipo Unicode SQL sono SQL_WCHAR, SQL_WVARCHAR e SQL_WLONGVARCHAR. I dati SQL_WCHAR hanno una lunghezza di stringa fissa, mentre SQL_WVARCHAR ha una lunghezza variabile con un valore massimo dichiarato e SQL_WLONGVARCHAR ha una lunghezza variabile con un valore massimo che dipende dall'origine dati.

L'indicatore del tipo Unicode C è SQL_C_WCHAR. Si tratta dell'impostazione predefinita per ognuno degli indicatori di tipo Unicode SQL. Tutti i tipi SQL possono essere convertiti in SQL_C_WCHAR, mentre SQL_C_WCHAR può essere convertita in tutti i tipi SQL. Un'applicazione può recuperare i dati in uno dei tre modi seguenti:

  • Recuperare i dati come SQL_C_CHAR.

  • Recuperare i dati come SQL_C_WCHAR.

  • Dichiarare i dati come SQL_C_TCHAR. Si tratta di una macro che inserisce SQL_C_WCHAR se l'applicazione viene compilata come applicazione Unicode o inserisce SQL_C_CHAR se viene compilata come applicazione ANSI.

SQL_C_TCHAR viene dichiarata in una funzione come indicato di seguito:

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

Quando l'applicazione viene compilata come applicazione Unicode, l'argomento ValueType viene modificato da SQL_C_TCHAR a SQL_C_WCHAR. Quando l'applicazione viene compilata come applicazione ANSI, l'argomento ValueType viene modificato in SQL_C_CHAR.

I driver Unicode devono comunque supportare i tipi di dati ANSI, compreso SQL_CHAR. Se un'applicazione che usa un driver Unicode viene associata a SQL_CHAR, Gestione driver non eseguirà il mapping dei dati SQL_CHAR a SQL_WCHAR. Il driver Unicode deve accettare i dati SQL_CHAR.

Gestione driver archivia i nomi di driver e DSN in Unicode e ne esegue il mapping ad ANSI in base alle esigenze. Se non è possibile eseguire il mapping di un carattere Unicode a un carattere ANSI (come può verificarsi se i caratteri di una tabella codici non corrispondente alla tabella codici nativa del computer vengono utilizzati nei nomi driver e DSN), i caratteri che non possono essere convertiti sono rappresentati da un carattere predefinito fornito dal sistema.