【问题标题】:Jet database 32 and 64 bits and alternativesJet 数据库 32 位和 64 位及替代品
【发布时间】:2011-08-17 02:39:21
【问题描述】:

我们有一个使用 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 看起来很有希望?

【问题讨论】:

  • 我认为使用正确的 ODBC 管理器存在一些棘手的问题。我不做这种开发,但刚刚读过它。我建议您搜索有关 64 位 Jet/ACE 的 SO 问题,因为我很确定其他人已经遇到过您的问题,并且提供了一个我记得相当简单(且不明显)的解决方案。
  • 另一个问题是 64 位 ACE 与 Office 2010 32 位不兼容。因此,如果您的用户安装了 Office 32 位,您的 64 位解决方案将失败。

标签: database x86-64 ms-jet-ace


【解决方案1】:

刚刚进行了快速搜索,似乎没有很多替代 Access 的方法,而无需访问 SQL Server。我找到了这个,http://www.vistadb.net/,这听起来很酷,但开发者许可相当昂贵。

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

【讨论】:

  • 如果您能提供您的代理程序的源代码,您将非常棒。
  • 我写了一篇关于它的文章,kratzindustries.com/CodeRedBlog/?p=92。我所做的是使用 .NET 中的 CodeDomProvider 类将代理代码即时编译到临时位置,因此我不必在客户端上安装任何额外的东西。
  • 已发布答案和关于CodeDomProvider 类的评论中的链接已损坏。
猜你喜欢
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
  • 2012-10-26
相关资源
最近更新 更多