我最近将一个 MFC 项目从 VS6 移植到 VS2005。 VS6 项目链接了 ddao35d.lib (DAO 3.5),它不再与 VS2005 中使用的"new"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 并且它将链接 daouuid.lib。”
...
“添加 daouuid.lib 是诀窍。另外:将 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) );
详情请见
关于c++ - 使用 DAO 获取 Access 数据库的拷贝 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260484/