使用DAO获取Access数据库的副本ID

Getting the replica ID of Access database using DAO

本文关键字:副本 ID 数据库 Access DAO 获取 使用      更新时间:2023-10-16

我最近移植了一个MFC项目从VS6到VS2005。VS6项目链接了ddao35d。它不再与VS2005中使用的"新"MFC兼容。为了解决这个问题,我现在包括afxdao.h,并根据其他帖子的建议将我的数据库类从CdbDatabase更改为CDaoDatabase: -

http://www.experts-exchange.com/Programming/Languages/CPP/Q_22465486.html

然而,CdbDatabase中有一个成员函数GetReplicaID()已经不在CDaoDatabase中了。有人知道如何使用CDaoDatabase类或其他方式获得Access数据库的副本ID吗?

以下是那篇文章的重要摘录:-

"从Visual c++ . net开始,Visual c++环境和向导不再支持DAO(尽管包含了DAO类,并且您仍然可以使用它们)。Microsoft建议您在新项目中使用OLE DB模板或ODBC。您应该只在维护现有应用程序时使用DAO。

DAO MFC库,包括ddao35d。lib是PlatformSDK的一部分,与新的MFC不兼容。你需要#include,它会链接daouvid .lib。"

"添加和daouid。莉比就是个圈套。新增:将CdbLastOLEError的声明改为CDaoErrorInfo。CdbLastOLEError仍然存在,但显然不再存在于ddao35.lib中。更改为CDaoErrorInfo并添加daouuid链接。Lib已经更正了链接器错误。"

我找到解决办法了。您可以通过CDaoDatabase类中的m_pDAODatabase成员直接访问DAO。例如:-

CDaoDatabase dbDatabase;
COleVariant varReplicaID( "", VT_BSTRT );
HRESULT hr;
hr = dbDatabase.m_pDAODatabase->get_ReplicaID(& V_BSTR(&varReplicaID) );

详细信息见

http://msdn.microsoft.com/en-us/library/1s0dx3s7.aspx