Freigeben über


CDatabase::OpenEx

Rufen Sie die Memberfunktion auf, um ein neu erstelltes CDatabase-Objekt initialisieren.

virtual BOOL OpenEx( 
   LPCTSTR lpszConnectString, 
   DWORD dwOptions = 0  
);

Parameter

  • lpszConnectString
    Gibt eine ODBC-Verbindungszeichenfolge an.Dies schließt den Datenquellennamen ein sowie andere optionale Informationen, wie eine Benutzer-ID und ein Kennwort.Beispielsweise "DSN=SQLServer_Source; UID=SA; PWD=abc123" ist eine mögliche Verbindungszeichenfolge.Beachten Sie, dass, wenn Sie NULL für lpszConnectString übergeben, ein " den Benutzer auffordert, eine Datenquelle auswählen.

  • dwOptions
    Eine Bitmaske, die eine Kombination der folgenden Werte festgelegt werden.Der Standardwert ist 0 und bedeutet, dass die Datenbank geöffnet wird, wie mit Schreibzugriff freigegeben, die ODBC-Cursorbibliotheks-DLL, wird nicht geladen, und das ODBC-Verbindungsdialogfeld zeigt nur an, wenn nicht genügend Informationen gibt, um die Beziehung zu erstellen.

    • CDatabase::openExclusive unterstützt nicht in diese Version der Klassenbibliothek.Eine Datenquelle ist immer geöffnet, als freigegeben (nicht exklusiv).Derzeit schlägt eine Assertion fehl, wenn diese Option angeben.

    • CDatabase::openReadOnly öffnen die Datenquelle, als schreibgeschützt.

    • CDatabase::useCursorLib Auslastung die ODBC-Cursorbibliotheks-DLL.Die Cursorbibliothek für einige Funktionen des zugrunde liegenden ODBC-Treibers und effektiv verhindert die Verwendung von Dynasets (wenn der Treiber sie unterstützt).Die einzigen unterstützten Cursor, wenn die Cursorbibliothek geladen wird, sind statische Momentaufnahmen und Vorwärtscursor.Wenn Sie planen, ein Recordset-Objekt direkt von CRecordset zu erstellen, ohne davon zu berechnen, sollten Sie die Cursorbibliothek nicht laden.

    • CDatabase::noOdbcDialog zeigen das ODBC-Verbindungsdialogfeld, nicht unabhängig davon, ob genügend Verbindungsinformationen angegeben werden.

    • CDatabase::forceOdbcDialog Anzeige immer das ODBC-Verbindungsdialogfeld.

Rückgabewert

Ungleich 0 (null), wenn die Verbindung erfolgreich hergestellt wird, Andernfalls 0, wenn der Benutzer Löschen auswählt, wenn er ein Dialogfeld fordern mehr Verbindungsinformationen dargestellt wird.In allen anderen Fällen löst das Framework eine Ausnahme aus.

Hinweise

das Datenbankobjekt muss initialisiert werden, bevor Sie es verwenden können, um ein Recordset-Objekt zu erstellen.

Wenn der lpszConnectString-Parameter im OpenEx Aufruf nicht genügend Informationen, um die Beziehung zu erstellen, wird der ODBC-Treiber ein Dialogfeld, um die erforderlichen Informationen vom Benutzer zu erhalten, sofern Sie nicht CDatabase::noOdbcDialog oder CDatabase::forceOdbcDialog im dwOptions-Parameter festgelegt haben.Wenn Sie OpenEx aufrufen, wird die Verbindungszeichenfolge, lpszConnectString, privat im CDatabase-Objekt gespeichert und ist verfügbar, indem die GetConnect-Memberfunktion aufruft.

Wenn Sie möchten, können Sie ein eigenes Dialogfeld öffnen, bevor Sie OpenEx aufrufen, um Informationen vom Benutzer, wie einem Kennwort abzurufen und hinzufügen, dass Informationen zur Verbindungszeichenfolge, die Sie zu OpenEx übergeben.Oder Sie können die Verbindungszeichenfolge speichern, die Sie beibehalten, sodass Sie sie wiederverwenden beim nächsten die Anwendung OpenEx auf einem CDatabase-Objekt.

Sie können die Verbindungszeichenfolge für mehrere Ebenen der Anmeldung Autorisierung (jede für ein anderes Objekt CDatabase ) verwenden oder andere datenquellenspezifische Informationen enthalten.Weitere Informationen über Verbindungszeichenfolgen, Chapter 6 finden Sie in der ODBC Programmer's Reference.

Es ist ein Timeout für einen Verbindungsversuch möglich, wenn beispielsweise der DBMS-Host nicht verfügbar ist.Wenn der Verbindungsversuch fehlschlägt, löst OpenExCDBException aus.

Beispiel

// m_dbCust is a CDatabase object embedded in a CDocument class.

// Connect the object to a read-only data source where
// the ODBC connection dialog box will always remain hidden
m_dbCust.OpenEx(_T("DSN=MFC_ODBCTest;UID=JOES"),
   CDatabase::openReadOnly | CDatabase::noOdbcDialog);

Anforderungen

Header: afxdb.h

Siehe auch

Referenz

CDatabase-Klasse

Hierarchien-Diagramm

CDatabase::Open

CDatabase::CDatabase

CDatabase::Close

CDBExceptions-Klasse

CRecordset::Open