1

我正在开发一个 Vista 小工具。该小工具正在使用本地 .mdb 数据库,使用 OLEDB。代码如下:

var cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + getDbFilePath() + ";Persist Security Info=False;";
var connection = new ActiveXObject("ADODB.Connection");
connection.ConnectionString = cs;

它在 Vista 32 下工作,但在 x64 下失败并显示消息:

找不到提供者。它可能没有正确安装。

当我从命令行运行 javascript 文件时,不会发生错误。 getDbFilePath()返回正确的路径、数据库是否存在等。

如何解决?也许,有使用其他数据库提供者的意义吗?

谢谢

4

1 回答 1

0

没有为 x64 注册/可用的本机 Jet 映像 - 它仅在 x64 上的 32 位进程中可用。边栏可执行文件作为本机 x64 映像运行 - 因此它失败了。

您的选择似乎有限:

  1. 放弃 Jet,例如切换到 SQL Compact Edition、SQL Express 或类似版本之一
  2. 将您的 Jet 调用包装在一个代理 32 位 COM 对象中。在 64 位注册表中将对象注册为进程外。例如

    http://dnjonline.com/article.aspx?ID=jun07_access3264

  3. 不支持 x64

试图强制侧边栏以 32 位模式运行似乎很困难/不可能,更不用说不合理了。

于 2009-05-04T13:45:18.667 回答