CDaoDatabase::Open

必须调用该成员函数初始化表示现有数据库的新构造的 CDaoDatabase 对象。

virtual void Open( 
   LPCTSTR lpszName, 
   BOOL bExclusive = FALSE, 
   BOOL bReadOnly = FALSE, 
   LPCTSTR lpszConnect = _T( 
   "" ) 
);

参数

  • lpszName
    是一个现有Microsoft Jet的字符串表达式(.MDB)数据库文件的名称。 如果文件名的扩展名,需要。 如果您的网络支持统一命名约定(UNC),还可以指定一个网络路径,例如“\ \ \ \ MYSERVER \ \ MYSHARE \ \ MYDIR \ \ MYDB.MDB”。 (双精度杠字符串中有必要,因为“\”是C++转义字符。)

    这些注意事项适用,在使用 lpszName。 如果它:

    • 引用供独占访问已打开的被其他用户的数据库,MFC引发类型 CDaoException的异常。 捕获异常通知用户数据库不可用。

    • 为空字符串(""),并 lpszConnect 为“ODBC; ”,列出所有已注册的ODBC数据源名称(dsn)显示对话框,以便用户可以选择数据库。 应避免使用ODBC数据源的直接连接;使用一个附加的表。

    • 否则不引用现有数据库或的有效ODBC数据源名称,MFC引发类型 CDaoException的异常。

    备注

    有关DAO错误代码的详细信息,请参见DAOERR.H文件。有关相关信息,请参见主题“Trappable数据访问错误” DAO帮助。

  • bExclusive
    TRUE 的布尔值,如果数据库将供独占(共享)访问和 FALSE 中打开,如果数据库针对共享访问中打开。 如果省略此参数,该数据库的共享访问中打开。

  • bReadOnly
    TRUE 的布尔值,如果数据库将进行只读访问和 FALSE 中打开,如果数据库将用于读/写访问中打开。 如果省略此参数,该数据库的读/写访问中打开。 所有依赖的记录集继承该属性。

  • lpszConnect
    字符串表达式用于打开该数据库使用了。 此字符串组合ODBC连接参数。 您必须提供独占和只读参数提供源字符串。 如果数据库是Microsoft Jet数据库(.MDB),该字符串为空("")。 默认的— _T("")语法—对Unicode以及您的应用程序ANSI编译的可移植性。

备注

Open 关联数据库与基础DAO对象。 不能用于构造记录集、tabledef或querydef对象的数据库对象,直到初始化。 Open 追加到关联的工作区的数据库集合的数据库对象。

使用参数如下所示:

  • 如果打开Microsoft Jet (.MDB)数据库,请使用 lpszName 参数传递 lpszConnect 参数的空字符串或通过窗体的加密字符串“; PWD=password”,如果数据库密码保护(仅.MDB数据库)。

  • 如果打开ODBC数据源,请通过在 lpszConnect 的有效ODBC连接字符串和在 lpszName的空字符串。

有关相关信息,请参见主题“OpenDatabase方法” DAO帮助。

备注

为了提供更好的性能,则外部数据库,包括ISAM数据库和ODBC数据源,建议访问您将外部数据库表与Microsoft Jet数据库引擎(.MDB)而不是直接连接到数据源。

则,例如,DBMS宿主不可用,可能会以连接尝试可以超时。 如果连接尝试失败,Open 引发类型 CDaoException的异常。

剩余的备注仅适用于ODBC数据库:

如果数据库是ODBC数据库,并且您的 Open 的参数调用不包含足够的信息建立连接,ODBC驱动程序打开对话框从用户的必需信息。 当您调用时,Open,专用存储您的连接字符串,lpszConnect并通过调用 GetConnect 成员函数可用。

如果希望,可以打开您的对话框,在调用 Open 从用户获得的信息,例如密码,则添加之前,对传递到 Open的连接字符串的信息。 或者希望保存(或许)在Windows注册表中的连接字符串,因此您可以重用它,则下次应用程序调用 CDaoDatabase 对象的 Open

可以为登录权限还使用连接字符串(每个类型的多个级别不同的 CDaoDatabase 对象)或表示其他数据库特定信息。

要求

Header: afxdao.h

请参见

参考

CDaoDatabase选件类

层次结构图

CDatabase::CDatabase

CDatabase::Close