En los sistemas operativos que dan soporte a UNICODE (Windows CE, Symbian OS,
Windows NT y Windows 2000), DB2 Everyplace acepta las series UNICODE sólo como
series de Entrada/Salida. Estas series UNICODE se guardan en formato
UTF-8 dentro del motor de DB2 Everyplace. Un carácter UNICODE
puede necesitar de uno a tres bytes de espacio de almacenamiento después de la
conversión a UTF-8. Una serie de caracteres almacenada en un
servidor de bases de datos tal como IBM DB2 Universal Database, puede
necesitar más espacio cuando la cadena se descarga y almacena en DB2
Everyplace en dispositivos Windows CE.
Notas sobre la interfaz UNICODE de CLI:
- Las funciones UNICODE de CLI de DB2 Everyplace tienen el carácter "W" al
final. Definiendo la macro UNICODE (que es el valor por omisión del
sistema en Windows CE), las funciones normales de la CLI se correlacionarán de
manera automática con las funciones UNICODE correspondientes. Para
escribir código portátil, defina la macro "UNICODE" y deje que el sistema
realice las conversiones.
- Cuando el soporte UNICODE está habilitado, los tipos de datos SQL_C_CHAR,
SQL_C_TCHAR y SQL_C_WCHAR tienen el mismo significado.
- Muchas funciones de la CLI tienen una longitud de serie (o almacenamiento
intermedio) como parámetro de entrada/salida.
- Para las funciones que en las que el Tipo de argumento es
SQLCHAR* (o SQLWCHAR* para la función W), la longitud es el número de
caracteres. Por ejemplo:
SQLRETURN SQLExecDirect (SQLHSTMT hstmt,
SQLCHAR FAR *szSqlStr,
SQLINTEGER cbSqlStr);
La serie UNICODE L"ABCD" tiene cuatro caracteres.
- Para las funciones que en las que el Tipo de argumento es
SQLPOINTER, la longitud es el número de bytes. Por ejemplo:
SQLRETURN SQLGetData (SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLSMALLINT fCType,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER FAR *pcbValue);
Las longitudes del parámetro de entrada cbValueMax y del
parámetro de salida *pcbValue están en bytes. La serie
UNICODE L"ABCD" ocho 8 bytes.
- Las funciones de UNICODE también pueden hacer que SQL_NTS indique una
serie acabada en NULL.
Consejos para escribir código portátil:
- Utilice SQLTCHAR en vez de SQLCHAR o SQLWCHAR.
- Utilice las funciones _tcsXXXX en vez de
strXXXX (ANSI) o wcsXXXX
(UNICODE). Por ejemplo, utilice _tcslen() en vez de
wcslen() o strlen().
- Utilice _TEXT() (o TEXT()) para acomodar series
literales. Por ejemplo, _TEXT("ABCD") se puede interpretar
como una cadena de caracteres ANSI o UNICODE dependiendo de la definición de
macro.
- Utilice sizeof(NombreMatriz)/sizeof(TCHAR) para determinar el
tamaño de una matriz de caracteres.
Para obtener un ejemplo, consulte el código de ejemplo SampleCLP de Windows
CE incluido con DB2 Everyplace.
Consulta relacionada