我可以从C+;使用Access数据库引擎2010吗+;使用Visual Studio 2017构建的程序? P>是否有一种方法可以在与Visual Studio 2017构建的MFC C++应用程序中获得DAO与Access数据库引擎2010的连接?我正在开发一个需要读取Access 97 MDB数据库的遗留应用程序,根据我在线阅读的内容,Access Database Engine 2016放弃了对这些数据库的支持。我的电脑上安装了两个版本的数据库引擎,但使用VS2017构建的应用程序似乎只连接到2016版本。当应用程序使用VS 2015构建时,它运行良好。有没有办法让我的应用程序改用2010版,这样我就可以打开这些旧数据库?(返回VS 2015不是一个选项)

我可以从C+;使用Access数据库引擎2010吗+;使用Visual Studio 2017构建的程序? P>是否有一种方法可以在与Visual Studio 2017构建的MFC C++应用程序中获得DAO与Access数据库引擎2010的连接?我正在开发一个需要读取Access 97 MDB数据库的遗留应用程序,根据我在线阅读的内容,Access Database Engine 2016放弃了对这些数据库的支持。我的电脑上安装了两个版本的数据库引擎,但使用VS2017构建的应用程序似乎只连接到2016版本。当应用程序使用VS 2015构建时,它运行良好。有没有办法让我的应用程序改用2010版,这样我就可以打开这些旧数据库?(返回VS 2015不是一个选项),c++,visual-studio,ms-access,mfc,dao,C++,Visual Studio,Ms Access,Mfc,Dao,每个windows副本-返回windows 98SE时都安装了JET(mdb)Access数据库引擎的副本。因此,如果您只希望读取和使用mdb文件,那么JET数据引擎的内置默认副本应该可以工作。windows的更高版本可能有更新版本的JET,因此无法读取97 mdb文件,但我相信windows上安装的默认引擎可以读取此类文件 因此,您不需要也不应该安装数据引擎的副本。您可以使用.NET ODBC提供程序,也可以使用.NET oleDB提供程序。这两个提供商都应该能够使用和打开mdb文件,而无需安

每个windows副本-返回windows 98SE时都安装了JET(mdb)Access数据库引擎的副本。因此,如果您只希望读取和使用mdb文件,那么JET数据引擎的内置默认副本应该可以工作。windows的更高版本可能有更新版本的JET,因此无法读取97 mdb文件,但我相信windows上安装的默认引擎可以读取此类文件

因此,您不需要也不应该安装数据引擎的副本。您可以使用.NET ODBC提供程序,也可以使用.NET oleDB提供程序。这两个提供商都应该能够使用和打开mdb文件,而无需安装任何附加软件

但是,您必须确保您的项目设置为(强制)使用x86编译,并且不要使用“任何CPU”或当然是x64位进行部署,因为这样,如果您的项目以x64位运行,您就不能使用+消耗x32位.dll和软件

编辑:为了确保您使用的是这个旧的预装数据引擎?不要在连接字符串中使用“ACE”。内置的.net(Visual Studio)连接生成器将允许您设置/选择“JET”(旧版)mdb数据引擎,而不是较新的(ACE)accDB数据引擎

您可以在此处看到此选项:

然后:

从上面看,如果你选择喷气式飞机而不是ACE?然后,您将使用20年的JET版本,该版本由defualt安装在自windows 98SE以来的每个windows版本上。这种选择应该允许您打开97个mdb文件,额外的功能是您不需要安装ACE数据引擎,也不需要安装连接组件包—它是预装在windows上的

如果要使用accDB格式?那么你必须安装ACE。但是,JET已经安装,并且应该已经安装

编辑:
我看到你在谈论C++而不是C·y/vb.NET。然而,上述建议仍然有效。因此,在代码中使用ODBC或OLeDB仍然是您的选择,并且注意到这两个都应该工作。

谢谢,是的,它是x86,但是这个应用程序是在MFC C++中,并且使用DAO库。您提供的信息似乎是针对.NET的。更具体地说,打开这些旧MDB的问题发生在调用DAOWorkspace::OpenDatabase()时。事实上,我确实编辑并跟进了这不是.net。我不确定是否有97格式的mdb要测试。是否可以打开较新的mdb文件而不是较旧的mdb文件?那么JET 4.0很可能无法打开a97 mdb文件。因此,请检查是否可以打开“部分”mdb文件,而不是全部。我试着检查/看看我是否有a97 mdb文件,是否可以用JET 4.0打开它-你应该可以-我愿意在这里被更正。编辑:这是DAO3.6,应该可以用。我可以用这段代码打开Access 2000 MDB,但不能访问97个。当我在DAOWorkspace::OpenDatabase()调用中将连接字符串设置为空字符串以外的任何字符串时,我得到一个错误,该错误表示“ODBC--到“”的连接失败”。哎哟!!既然您可以打开2000个mdb,那么您必须挖掘DAO的旧副本。我不确定这会有多容易。DAO和mdb文件格式仅适用于Access 2003。2007年,他们改名为ACE。所以我很惊讶你不能打开a97格式。我想这可能是access 2.0 mdb!!!所以Access 2003(和JET)总是可以打开97个mdb文件。我想知道那个mdb文件是否损坏了?我认为ACE 2010是开启a97的最后一个版本,但是纯喷气式飞机vs ACE?据我所知,这应该行得通。只是想澄清一下?我注意到并提到Access 2003(17年前)是JET for Access的最后一个版本。该版本可以打开97个mdb文件。甚至Windows10?JET就是2003年的JET4.0,所以我很惊讶你不能打开那个mdb文件。如前所述,mdb可能是1992年的a95或gasp Access 2.0!!!-因此,JET应该能够使用该数据库。如前所述,ACE不会。虽然ACE和JET都安装了DAO提供程序,但很可能.dll被屏蔽或升级为ACE“DAO”,但mdb文件和a97文件应该打开。