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

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

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

Symptômes

Dans Visual Studio 2012, la méthode de la CDatabase::GetConnect() bibliothèque MFC retourne toujours une chaîne vide au lieu des informations de connexion de 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 logiciel 2607393 est installé.

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

Cause

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

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

Résolution 1 : Modifier votre code

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

Dans cette classe dérivée, remplacez la OpenEx méthode . Dans le remplacement, appelez d’abord la CDatabase version de OpenEx pour vous assurer que le chaîne de connexion est obtenu à partir de l’appel à SQLDriverConnect. Ensuite, déchiffrez et stockez le chaîne de connexion dans un CString objet que vous pourrez référencer ultérieurement.

Résolution 2 : Migrer vers Visual Studio 2013

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

Dans Visual Studio 2013, la GetConnect() méthode retourne un CString. Lorsque la méthode est appelée, le chaîne de connexion chiffré est déchiffré et retourné à l’appelant, qui est alors responsable de la suppression de la mémoire pour la sécurité.

Référence

CDatabase ::GetConnect