【问题标题】:Vista x64, gadget development, OLEDB Error: "provider cannot be found"Vista x64,小工具开发,OLEDB 错误:“找不到提供程序”
【发布时间】:2009-05-04 13:20:46
【问题描述】:

我正在开发一个 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() 返回正确的路径、数据库是否存在等

如何解决?也许,使用其他数据库提供程序有什么意义?

谢谢

【问题讨论】:

    标签: javascript windows-vista oledb


    【解决方案1】:

    没有为 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 位模式运行似乎很困难/不可能,更不用说不合理了。

    【讨论】:

    • 我使用的是旧数据库,因此不能选择切换数据库。所以我会尝试创建 w 包装器。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多