La méthode CDatabase :: GetConnect renvoie une chaîne vide dans Visual Studio

Cet article vous aide à résoudre le problème où la CDatabase::GetConnect() méthode de la bibliothèque MFC (Microsoft Foundation Class) renvoie toujours une chaîne vide à la place des informations de connexion de base de données actives dans Visual Studio 2012.

Version du produit d’origine :   Visual Studio Ultimate 2012, Visual Studio Premium 2012
Numéro de la base de connaissances initiale :   2915724

Symptômes

Dans Visual Studio 2012, la CDatabase::GetConnect() méthode de la bibliothèque MFC renvoie toujours une chaîne vide à la place des informations de connexion à la base de données active.

Ce problème se produit également dans Visual Studio 2010 si un correctif logiciel plus récent que le correctif 2607393 est installé.

Ce problème se produit également dans Visual Studio 2008 si un correctif logiciel plus récent que le correctif 2607389 est installé.

Cause

Pour des raisons de sécurité, le comportement de la CDatabase classe a été modifié de sorte que la GetConnect méthode renvoie une chaîne vide.

Pour résoudre ce problème, utilisez l’une des méthodes suivantes.

Résolution 1 : modifier votre code

Modifiez votre code afin de vous protéger contre la condition de chaîne vide. Pour ce faire, créez une classe dérivée de CDatabase et utilisez cette classe comme classe de base de données dans votre application.

Dans cette classe dérivée, substituez la OpenEx méthode. Dans le remplacement, commencez par appeler la CDatabase version de OpenEx pour vous assurer que la chaîne de connexion est obtenue à partir de l’appel à SQLDriverConnect . Ensuite, déchiffrez et stockez la chaîne de connexion dans un CString objet que vous pouvez référencer par la suite.

Résolution 2 : migrer vers Visual Studio 2013

Utilisez une version plus récente des MFC. Par exemple, utilisez la version incluse dans Visual Studio 2013.

Dans Visual Studio 2013, la GetConnect() méthode renvoie un CString . Lorsque la méthode est appelée, la chaîne de connexion chiffrée est déchiffrée et renvoyée à l’appelant, qui est responsable de la mise à zéro de la mémoire pour la sécurité.

Référence

CDatabase :: GetConnect