Freigeben über


CDatabase::Open

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

virtual BOOL Open(
   LPCTSTR lpszDSN,
   BOOL bExclusive = FALSE,
   BOOL bReadOnly = FALSE,
   LPCTSTR lpszConnect = _T("ODBC;"),
   BOOL bUseCursorLib = TRUE 
);

Parameter

  • lpszDSN
    Gibt einen Datenquellennamen - einen Namen an, der mit ODBC durch das ODBC-Administratorprogramm registriert wird.Wenn ein DSN-Wert in lpszConnect (in der Form "DSN=<data-source>") angegeben wird, darf er nicht in lpszDSN erneut angegeben werden.In diesem Fall sollte lpszDSNNULL sein.Andernfalls können Sie NULL führen, wenn der Benutzer mit einem " darstellen möchten, in dem der Benutzer eine Datenquelle auswählen kann.Weitere Informationen finden Sie Hinweise.

  • bExclusive
    Unterstützt nicht in diese Version der Klassenbibliothek.Derzeit schlägt eine Assertion fehl, wenn dieser Parameter TRUE ist.Die Datenquelle ist immer geöffnet, als freigegeben (nicht exklusiv).

  • bReadOnly
    TRUE, wenn Sie die Verbindung, um schreibgeschützt festlegen möchten und Aktualisierungen der Datenquelle zu verhindern.Alle abhängigen Recordsets erben dieses Attribut.Der Standardwert ist FALSE.

  • lpszConnect
    Gibt eine Verbindungszeichenfolge an.Die Verbindungszeichenfolge verkettet Informationen, einschließlich möglicherweise einen Datenquellennamen, eine Benutzer-ID, die in der Datenquelle gültig sind, eine Benutzerauthentifizierungszeichenfolge (Kennwort, wenn die Datenquelle ein erforderlich) und andere Informationen.Die gesamte Verbindungszeichenfolge muss durch die Zeichenfolge "ODBC vorangestellt werden; " (oder Kleinbuchstabe).Das "ODBC; " Zeichenfolge wird verwendet, um anzugeben, dass die Verbindung mit einer ODBC-Datenquelle ist; Dies ist für Aufwärtskompatibilität, als zukünftige Versionen möglicherweise der Klassenbibliothek NichtODBC unterstützten Datenquellen.

  • bUseCursorLib
    TRUE, wenn Sie die ODBC-Cursorbibliotheks-DLL geladen werden soll.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.Der Standardwert ist TRUE.Wenn Sie planen, ein Recordset-Objekt direkt von CRecordset zu erstellen, ohne davon zu berechnen, sollten Sie die Cursorbibliothek nicht laden.

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.

HinweisHinweis

Die OpenEx-Memberfunktion aufzurufen ist die bevorzugte Methode, mit einer Datenquelle herzustellen und das Datenbankobjekt zu initialisieren.

Wenn die Parameter im Öffnen Aufruf nicht genügend Informationen enthalten, um die Beziehung zu erstellen, wird der ODBC-Treiber ein Dialogfeld, um die erforderlichen Informationen vom Benutzer zu erhalten.Wenn Sie Öffnen aufrufen, wird die Verbindungszeichenfolge, lpszConnect, 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 Öffnen aufrufen, um Informationen vom Benutzer, wie einem Kennwort abzurufen, hinzufügen, dass Informationen zur Verbindungszeichenfolge, die Sie zu Öffnen übergeben.Oder Sie können die Verbindungszeichenfolge speichern, die Sie beibehalten, sodass Sie sie wiederverwenden beim nächsten die Anwendung Öffnen 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 5 finden Sie in Windows SDK.

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 ÖffnenCDBException aus.

Beispiel

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

if (bDefault)
{
   // Connect the object to a data source (no password)
   // the ODBC connection dialog box will always remain hidden
   m_dbCust.Open(_T("MFC_ODBCTest"), FALSE, FALSE, _T("ODBC;UID=JOES"));
}
else
{
   // ...Or, query the user for all connection information
   m_dbCust.Open(NULL);
}

Anforderungen

Header: afxdb.h

Siehe auch

Referenz

CDatabase-Klasse

Hierarchien-Diagramm

CDatabase::OpenEx

CDatabase::CDatabase

CDatabase::Close

CDBExceptions-Klasse

CRecordset::Open