Share via


Controladores de Unicode

Si un controlador debe ser un controlador Unicode o un controlador ANSI depende completamente de la naturaleza del origen de datos. Si el origen de datos admite datos Unicode, el controlador debe ser un controlador Unicode. Si el origen de datos solo admite datos ANSI, el controlador debe permanecer como controlador ANSI.

Un controlador Unicode debe exportar SQLConnectW para que el Administrador de controladores reconozca como un controlador Unicode.

Un controlador Unicode debe aceptar funciones Unicode (con un sufijo de W) y almacenar datos Unicode. También puede aceptar funciones ANSI, pero no es necesaria. (El Administrador de controladores no pasa una llamada de función ANSI con el sufijo A al controlador, pero lo convierte en una llamada a función ANSI sin el sufijo y luego lo pasa al controlador.)

Un controlador Unicode debe poder devolver conjuntos de resultados en Unicode o ANSI, en función del enlace de la aplicación. Si una aplicación se enlaza a SQL_C_CHAR, el controlador Unicode debe convertir SQL_WCHAR datos en SQL_CHAR. El administrador de controladores asignará SQL_C_WCHAR a SQL_C_CHAR para controladores ANSI, pero no realiza ninguna asignación para controladores Unicode.

Nota:

Al determinar el tipo de controlador, el Administrador de controladores llamará a SQLSetConnectAttr y establecerá el atributo SQL_ATTR_ANSI_APP en el momento de la conexión. Si la aplicación usa API ANSI, SQL_ATTR_ANSI_APP se establecerá en SQL_AA_TRUE y, si usa Unicode, se establecerá en un valor de SQL_AA_FALSE. Este atributo se usa para que el controlador pueda mostrar un comportamiento diferente en función del tipo de aplicación. La aplicación no puede establecer el atributo directamente y no es compatible con SQLGetConnectAttr. Si un controlador muestra el mismo comportamiento para las aplicaciones ANSI y Unicode, debe devolver SQL_ERROR para este atributo. Si el controlador devuelve SQL_SUCCESS, el Administrador de controladores separará las conexiones ANSI y Unicode cuando se use la agrupación de conexiones.