3

我们有一个使用 OLEDB 和 Jet 引擎 Microsoft.Jet.OLEDB.4.0 的应用程序。我们正在将我们的应用程序转换为也以 64 位模式运行。但是,数据库引擎不再是 64 位 Windows 的标准部分。但 Office 2010 64 位确实安装了 64 位访问数据库引擎(请参阅http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en)所以您可以使用 Microsoft.ACE.OLEDB.12.0。

所以我正在努力解决问题,以便我们的应用程序也可以在 64 位模式下运行。但是 OLEDB 代码抱怨没有注册数据库引擎。所以我尝试在上面的链接上安装可再发行的 64 位引擎。但它告诉我需要先卸载 32 位 Office 2007。我不会那样做,因为我确信某些设置等会丢失。

所以我的问题是: 32 位数据库访问组件在 64 位模式下不能工作,但是如果已经安装了 32 位,您不能安装 64 位组件?这对任何人都有意义吗?!

我意识到微软希望人们切换到 SQL Server Express,除了它过于侵入性,即使在全新的 Windows 7 计算机上也能可靠地安装,而且在不同机器之间复制或移动数据并不简单。那么Jet有合适的替代品吗?一些简单但适用于 32 位和 64 位并且理想情况下支持 OLEDB 和 ODBC 的东西?SQLite 看起来很有希望?

4

1 回答 1

1

只是做了一个快速搜索,似乎没有很多替代访问而不去 SQL 服务器。我找到了这个http://www.vistadb.net/,这听起来很酷,但开发人员的许可相当昂贵。

作为替代方案,您仍然可以在不安装 64 位驱动程序的情况下使用 Access。这发生在我身上,必须从 Access 读取,但无法将应用程序转换为 32 位。我的回答是编写一个单独的“代理”可执行文件,该可执行文件将以 32 位运行。我将使用该System.Diagnostics.Process对象启动应用程序并通过重定向的标准输入和输出与它进行通信,将连接字符串作为命令行参数传递。该类DataTable具有内置功能ReadXMLWriteXML可以轻松传递这样的数据。

于 2011-08-03T18:24:25.877 回答