Delen via


Unicode-gegevens

SQL Unicode-gegevenstypen worden beschikbaar gesteld om gegevens te beschrijven die zich in Unicode bevinden in de DBMS. Er wordt een C Unicode-gegevenstype opgegeven waarmee een toepassing gegevens kan binden aan een Unicode-buffer. Driver Manager kan gegevens van een Unicode C-type (SQL_C_WCHAR) converteren om deze te laten functioneren met een ANSI-stuurprogramma.

Een ODBC 3.0 of 2. x-toepassing verbindt altijd met de ANSI-gegevenstypen. Voor optimale prestaties moet een ODBC 3.5-toepassing (of hoger) verbinding maken met het ANSI-gegevenstype C als het SQL-kolomtype ANSI is en moet worden verbonden met het Unicode C-gegevenstype als het SQL-kolomtype Unicode is.

De SQL Unicode-typeindicatoren zijn SQL_WCHAR, SQL_WVARCHAR en SQL_WLONGVARCHAR. SQL_WCHAR gegevens een vaste tekenreekslengte hebben, terwijl SQL_WVARCHAR een variabele lengte heeft met een gedeclareerd maximum en SQL_WLONGVARCHAR een variabele lengte heeft met een maximum dat afhankelijk is van de gegevensbron.

De indicator voor het type C Unicode is SQL_C_WCHAR. Dit is de standaardinstelling voor elk van de SQL Unicode-typeindicatoren. Alle SQL-typen kunnen worden geconverteerd naar SQL_C_WCHAR en SQL_C_WCHAR kunnen worden geconverteerd naar alle SQL-typen. Een toepassing kan op drie manieren gegevens ophalen:

  • Haal de gegevens op als SQL_C_CHAR.

  • Haal de gegevens op als SQL_C_WCHAR.

  • Declareer de gegevens als SQL_C_TCHAR. Dit is een macro die SQL_C_WCHAR invoegt als de toepassing is gecompileerd als een Unicode-toepassing of SQL_C_CHAR invoegt als deze is gecompileerd als een ANSI-toepassing.

SQL_C_TCHAR wordt als volgt gedeclareerd in een functie:

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

Wanneer de toepassing wordt gecompileerd als een Unicode-toepassing, wordt het argument ValueType gewijzigd van SQL_C_TCHAR in SQL_C_WCHAR. Wanneer de toepassing is gecompileerd als een ANSI-toepassing, wordt het argument ValueType gewijzigd in SQL_C_CHAR.

Unicode-stuurprogramma's moeten nog steeds ANSI-gegevenstypen ondersteunen, waaronder SQL_CHAR. Als een toepassing die met een Unicode-stuurprogramma werkt, zich bindt aan SQL_CHAR, worden de SQL_CHAR-gegevens niet toegewezen aan SQL_WCHAR. Het Unicode-stuurprogramma moet de SQL_CHAR gegevens accepteren.

Stuurprogrammabeheer slaat de namen van stuurprogramma's en DSN's op in Unicode en wijst deze indien nodig toe aan ANSI. Als een Unicode-teken niet kan worden toegewezen aan een ANSI-teken (zoals kan gebeuren als tekens van een codepagina die niet de systeemeigen codepagina van de computer is, worden gebruikt in stuurprogramma- en DSN-namen), worden de tekens die niet kunnen worden geconverteerd, vertegenwoordigd door een standaardteken dat door het systeem wordt geleverd.