El método CDatabase::GetConnect devuelve una cadena vacía en Visual Studio
Este artículo le ayuda a resolver el problema por el que el método de la CDatabase::GetConnect() biblioteca Microsoft Foundation Class (MFC) siempre devuelve una cadena vacía en lugar de la información de conexión de base de datos activa en Visual Studio 2012.
Versión original del producto: Visual Studio Ultimate 2012, Visual Studio Premium 2012
Número de KB original: 2915724
Síntomas
En Visual Studio 2012, el método de la CDatabase::GetConnect() biblioteca MFC siempre devuelve una cadena vacía en lugar de la información de conexión de base de datos activa.
Este problema también se produce en Visual Studio 2010 si se instala una revisión más reciente que la 2607393 de revisiones.
Este problema también se produce en Visual Studio 2008 si se instala una revisión más reciente que la 2607389 de revisiones.
Causa
Por motivos de seguridad, se cambió el comportamiento de la CDatabase clase para que el GetConnect método devuelva una cadena vacía.
Para resolver el problema, use uno de los siguientes métodos.
Resolución 1: Modificar el código
Modifique el código para protegerse de la condición de cadena vacía. Para ello, cree una clase derivada de CDatabasey use esta clase como clase de base de datos en la aplicación.
En esta clase derivada, invalide el OpenEx método . En la invalidación, llame primero a la CDatabase versión de para asegurarse de OpenEx que la cadena de conexión se obtiene de la llamada a SQLDriverConnect. A continuación, descifre y almacene la cadena de conexión en un CString objeto al que pueda hacer referencia más adelante.
Resolución 2: Migración a Visual Studio 2013
Use una versión más reciente de MFC. Por ejemplo, use la versión que se incluye en Visual Studio 2013.
En Visual Studio 2013, el GetConnect() método devuelve un CString. Cuando se llama al método, la cadena de conexión cifrada se descifra y se devuelve al autor de la llamada, que es responsable de eliminar a cero la memoria para la seguridad.