从过时的DAO类迁移

时间:2014-11-03 16:29:44

标签: c++ dao

我有一个在VS 2002/3中开发的C ++系统,我正在升级到当前的技术,它广泛使用CDAO类(CDAODatabase等)。这些在VS 2005中已弃用,在x64编译的代码中不可用。

我无法弄清楚我应该迁移到哪个数据访问类以进行此升级。有什么建议?是否有一组特定的类,我可以插入并以最少的代码更新获得相同的功能?

1 个答案:

答案 0 :(得分:1)

你的选择是ODBC,OLE DB& ADO 所有这些都提供对多个数据库的访问(使用相应的提供程序),而DAO基本上是用于Microsoft Access(尽管我认为支持ODBC桥)。

ODBC是最遗留的,但也是MFC向导中更好支持的(虽然也是性能最差)。 您可以使用ODBC的原始C API或CDatabase等MFC包装器类(这些MFC类也由连接到ODBC的MFC应用程序向导使用)。 MFC类遵循与DAO(CDaoDatabase等)类似的对象模型。

OLE DB具有最佳性能但是级别非常低(尽管在MFC向导中也支持它)。 您可以从原始C COM API或MFC应用程序向导生成的智能指针包装器中使用它

最后,ADO位于OLE DB之上(因此与OLE DB兼容的提供程序也可用于ADO)。 性能不如OLE DB,但更友好。 ADO通常是ASP(pre .NET),VB6等的首选技术。 您可以通过三种方式使用ADO:

  • 使用原始C COM API(低级别,不推荐)。

  • 使用MFC类向导(或最新版本的等效项)在COM接口周围生成MFC包装类。

  • 使用#import指令生成智能指针包装器(并使用易于使用的几种类型,如bstr_t,variant_t等)和ADO错误的C ++异常包装器。

我更喜欢带有ADO的#import方法,对于样本,请参阅

http://msdn.microsoft.com/en-us/library/windows/desktop/ms677563(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms677493(v=vs.85).aspx