c++ - 使用 DAO 获取 Access 数据库的拷贝 ID

标签 c++

我最近将一个 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) );

详情请见

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

关于c++ - 使用 DAO 获取 Access 数据库的拷贝 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260484/

相关文章:

c++ - 2 的幂的整数的 log2

c++ - 这个后增量语句会导致未定义的行为吗?

c++ - 链接器错误 : referenced in function _main

c++ - 使用 ffmpeg 流式传输自定义数据包的正确方法是什么?

c++ - 使用 Win32 C++ 访问 protected 网络共享

c++ - QThread 与 QTimer 连接问题

C++ 快速 cin 输入流

c++ - 邻接表中的深度优先或广度算法

C++ 简单编译错误

c++ - 静态 char* 的数组