CDatabase::OpenEx

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

返回值:
如果成功形成连接,则返回非零值;否则如果在出现要求更多连接信息的对话框时,用户选择Cancel,则为0。在其它所有情况下框架产生一个异常。

参数:
lpszConnectString指定一个ODBC连接字符串。这包括数据源名字和用户ID与密码等其它任选信息。例如“DSN = SQLServer_Source; UID = SA; PWD =abc123”是一个可能的连接字符串。注意到如果为lpszConnectString传递NULL,则将出现数据源对话框,提示用户选择一个数据源。
dwOptions指定下列值一种组合的位屏蔽。缺省值0表示以共享方式打开数据库,带有写访问,不装入ODBC游标库DLL,并且只有在没有足够信息形成连接时显示ODBC连接对话框。
·CDatabase::openExclusive此类库版本不支持。为共享(非排它)数据源总是打开的。如果选定此选项,断言失败。
·CDatabase::UseCursorLib装入ODBC游标库DLL。游标掩盖了基础ODBC驱动程序的一些功能,有效地阻止使用动态集(如果驱动程序支持它们)。如果装入游标库,支持的唯一游标是静态快照和只能向前游标。缺省值为TRUE。如果计划从CRecordset直接创建一个记录集对象而不派生,则不应装入游标库。
·CDatabase::noOdbcDialog不管是否提供了足够的连接信息,不显示ODBC连接对话框。
·CDatabase::forceOdbcDialog总是显示ODBC连接对话框。

说明:
调用这个成员函数,可以初始化一个新构造的CDatabase对象。必须在用来构造记录集对象前初始化数据库对象。
如果OpenEx调用中的lpszConnectString参数不包含形成连接的足够信息,则ODBC驱动程序打开一个对话框,从用户那里得到必要信息。假设你没有在dwOptions选择中设置CDatabase::noOdbcDialog或CDatabase::forceOdbcDialog。调用OpenEx时,连接字符串lpszConnectString自己存放在CDatabase对象中,并且可以通过调用GetConnect成员函数成为有效。
如果需要的话,可以在调用OpenEx之前打开自己的对话框,从用户处获取密码等信息,然后把那些信息加到传递到OpenEx的连接字符串。
或者有可能想保存传递的连接字符串,这样在应用等到下次调用OpenEx时可以在CDatabase对象上重用它。
还可以把连接字符串用于多个登录授权级别(每个用于不同的CDatabase对象),或者传送其它数据源指定信息。有关连接字符串的更多信息,请参阅联机文档“ODBC SDK程序员参考”中的第5章。
连接有可能试图超时,例如DBMS主机无效时。如果连接试图失败,则OpenEx产生CDBException。

示例:
//Embed a CDatabase object
//in your document class
CDatabase m_dbCust( );

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

请参阅:
CDatabase::Open, CDatabase::CDatabase, CDatabase::Close, CDBException, CRecordset::Open