Die CDatabase:: GetConnect-Methode gibt eine leere Zeichenfolge in Visual Studio

In diesem Artikel können Sie das Problem beheben, bei dem die CDatabase::GetConnect() Methode in der MFC-Bibliothek (Microsoft Foundation Class) immer eine leere Zeichenfolge anstelle der aktiven Datenbankverbindungsinformationen in Visual Studio 2012 zurückgibt.

Original Version des Produkts:   Visual Studio Ultimate 2012, Visual Studio Premium 2012
Ursprüngliche KB-Nummer:   2915724

Problembeschreibung

In Visual Studio 2012 gibt die CDatabase::GetConnect() Methode in der MFC-Bibliothek immer eine leere Zeichenfolge anstelle der aktiven Datenbankverbindungsinformationen zurück.

Dieses Problem tritt auch in Visual Studio 2010 auf, wenn ein Hotfix installiert ist, der neuer ist als Hotfix 2607393.

Dieses Problem tritt auch in Visual Studio 2008 auf, wenn ein Hotfix installiert ist, der neuer ist als Hotfix 2607389.

Ursache

Aus Sicherheitsgründen wurde das Verhalten der CDatabase Klasse so geändert, dass die GetConnect Methode eine leere Zeichenfolge zurückgibt.

Verwenden Sie eine der folgenden Methoden, um dieses Problem zu beheben.

Lösung 1: Ändern des Codes

Ändern Sie den Code so, dass er vor der leeren Zeichenfolgen Bedingung schützt. Erstellen Sie dazu eine Klasse, die von abgeleitet ist CDatabase , und verwenden Sie diese Klasse als Datenbankklasse in Ihrer Anwendung.

Überschreiben Sie die-Methode in dieser abgeleiteten Klasse OpenEx . Rufen Sie in der Außerkraftsetzung zunächst die CDatabase Version von OpenEx auf, um sicherzustellen, dass die Verbindungszeichenfolge aus dem Aufruf von abgerufen wird SQLDriverConnect . Anschließend entschlüsseln und speichern Sie die Verbindungszeichenfolge in einem CString Objekt, auf das Sie später verweisen können.

Lösung 2: Migrieren zu Visual Studio 2013

Verwenden Sie eine neuere Version von MFC. Verwenden Sie beispielsweise die in Visual Studio 2013 enthaltene Version.

In Visual Studio 2013 gibt die GetConnect() Methode einen zurück CString . Wenn die Methode aufgerufen wird, wird die verschlüsselte Verbindungszeichenfolge entschlüsselt und an den Aufrufer zurückgegeben, der dann für die Nullstellung des Arbeitsspeichers für die Sicherheit verantwortlich ist.

Referenz

CDatabase:: GetConnect