CDatabase::OpenEx

调用该成员函数初始化新构造的 CDatabase 对象。

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

参数

  • lpszConnectString
    指定ODBC连接字符串。这包括数据源名称以及其他选项信息,如用户ID和密码。例如,“DSN=SQLServer_Source; UID=SA; PWD=abc123”是一个可能的连接字符串。请注意,如果通过 lpszConnectString的 NULL,数据源"对话框将提示用户选择数据源。

  • dwOptions
    指定以下值的组合的位掩码。默认值为0,这意味着数据库中打开与编写共享,ODBC游标库DLL不会加载,并且,ODBC连接对话框将显示,只有在未生成访问的足够的信息。

    • 在选件类库的此版本不支持的CDatabase::openExclusive。数据源始终中打开如共享(非独占)。目前,因此,如果指定此选项,则断言失败。

    • CDatabase::openReadOnly 打开数据源为只读。

    • CDatabase::useCursorLib 加载ODBC游标库DLL。(如果该驱动程序支持它们),游标库蒙板,有效阻止使用动态集的基础ODBC驱动程序的某些功能。支持的唯一光标,则将加载游标库。是静态快照以及仅向前游标。如果计划创建记录集对象直接从 CRecordset,而无需从派生,则不应加载游标库。

    • CDatabase::noOdbcDialog 不显示ODBC连接对话框,无论提供足够的连接信息。

    • 始终CDatabase::forceOdbcDialog 显示ODBC连接对话框。

返回值

非零,如果连接成功生成;否则0,如果用户取消,当显示对话框请求更多连接信息。其他情况下,框架引发异常。

备注

您的数据库对象,然后才能使用该构造记录集对象之前,必须初始化。

如果您的 OpenEx 的 lpszConnectString 参数调用不包含足够的信息建立连接,ODBC驱动程序打开对话框从用户的必需信息,假定您尚未设置 CDatabase::noOdbcDialogCDatabase::forceOdbcDialog 在 dwOptions 参数。当您调用 OpenEx时,您的连接字符串,lpszConnectString,在 CDatabase 对象的私有存储并通过调用 GetConnect 成员函数可用。

如果希望,可以打开您的对话框,在调用 OpenEx 从用户获得的信息,例如密码,然后添加之前,对传递到 OpenEx的连接字符串的信息。或者希望保存所传递的连接字符串,以便您可以重用它,则下次应用程序调用 CDatabase 对象的 OpenEx

可以为登录权限还使用连接字符串(每个类型的多个级别不同的 CDatabase 对象)或表示其他数据源特定信息。有关连接字符串的更多信息,请参见 ODBC 程序员参考 中的第6章。

则,例如,DBMS宿主不可用,可能会以连接尝试可以超时。如果连接尝试失败,OpenEx 引发 CDBException

示例

// 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);

要求

Header: afxdb.h

请参见

参考

CDatabase选件类

层次结构图

CDatabase::Open

CDatabase::CDatabase

CDatabase::Close

CDBException选件类

CRecordset::Open