【问题标题】:Where/how can I download (and install) the Microsoft.Jet.OLEDB.4.0 for Windows 8, 64 bit?在哪里/如何下载(和安装)适用于 Windows 8、64 位的 Microsoft.Jet.OLEDB.4.0?
【发布时间】:2012-11-28 11:17:01
【问题描述】:

我有一个使用 Jet OLEDB 4.0 的 32 位 .net 2.0 应用程序。

它在 Windows 8 32 位上运行 fin,但在 64 位上不运行。在 64 位上出现错误:

“Microsoft.Jet.OLEDB.4.0”提供程序未在本地注册 机器。在 System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper&datasrcWrapper)

我知道您不能将该数据库(驱动程序)与 64 位 EXE 一起使用。但是我没有读到任何关于它不能与 32 位 exe 一起使用的信息。

我尝试了什么:

  1. Installed the MS Access Database Engine 2010 32 bit (and restarted)
  2. 验证msjet40.dll在“C:\Windows\SysWOW64\msjet40.dll”目录下并注册到RegSvr32。

所以我认为(希望)如果我可以安装数据库支持,它就会正常工作。

问题是,我找不到下载的地方。

【问题讨论】:

  • 不可用。将您的 EXE 项目的平台目标设置更改为 x86,以便 32 位版本可以工作。
  • @Hans,我的 .net 应用程序已经编译为 32 位应用程序(确认 b/c 它在 32 位版本的 Windows 上运行)。这与定位 x86 有什么不同?
  • VS2005 和 VS2008 上 .NET 2 应用程序的默认目标是 AnyCPU。这将使它在 64 位版本的 Windows 上作为 64 位进程运行。所以不要假设任何东西并检查您的平台目标设置,x86 是必需的。
  • 啊……谢谢汉斯。我会看看那个。
  • 如果是这样,那么 64 位驱动程序不会为我们解决问题吗? (只是想知道。无论哪种方式,你的小费都值得一试)

标签: .net windows-8


【解决方案1】:

在现代 Windows 上,此驱动程序默认不再可用,但您可以在 MS 网站上以 Microsoft Access Database Engine 2010 Redistributable 的身份下载。如果您的应用是 32 位,请务必下载并安装 32 位变体,因为据我所知,32 位和 64 位变体不能共存。

根据您的应用程序如何定位其数据库驱动程序,这可能就是所有需要的。但是,如果您使用 UDL 文件,则有一个额外的步骤 - 您需要编辑该文件。不幸的是,在 64 位机器上,用于编辑 UDL 文件的向导默认是 64 位的,它不会看到 JET 驱动程序,只会拍打它首先在 UDL 文件中找到的任何驱动程序。有两种方法可以解决这个问题:

  1. 像这样启动 32 位 UDL 向导:C:\Windows\syswow64\rundll32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\path\to\your.udl。请注意,我可以在 Win7 64 Pro 上使用这种技术,但它在 Server 2008R2 上不起作用(可能是我的错误,只是提一下)
  2. 在记事本或其他文本编辑器中打开 UDL 文件,它应该或多或少具有以下格式:

[oledb] ; Everything after this line is an OLE DB initstring Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Path\To\The\database.mdb;Persist Security Info=False

这应该可以让您的应用正确启动。

【讨论】:

  • 我没有 .udl 文件。我看到了如何创建一个空白的 .udl 文件。我是否在应用程序目录中创建它?我给我 .dll 吗?应用程序或 Jet OLEDB 如何知道在那里“寻找”它?
  • @ClayNichols 并非所有应用程序都使用 UDL 文件,它只是一个额外的间接层,允许应用程序配置的更大灵活性。也许您的应用程序不需要,数据库文件的路径可以存储在应用程序内部,或者由应用程序以其他方式配置。您是否安装了我在此期间提到的驱动程序?因为,一旦你这样做了,错误应该会消失或改变,例如,表明它无法找到 mdb 文件。
  • 是的,我安装了那个驱动程序。哦,对不起,是的,我之前已经尝试过了(忘记注意了)。尝试了 32 位版本(然后将其卸载)和 64 位版本。两次同样的错误。我假设 32 位应用程序需要 32 位版本,对吧?
  • 是的,因为这两个驱动程序不能共存,您确实必须在安装 32 位驱动程序之前卸载 64 位驱动程序。即使您安装了 32 位驱动程序,驱动程序似乎也丢失了,这是不合逻辑的。您可以尝试运行我在第 1 点中提到的命令,在初始屏幕中您可以看到所有已注册的驱动程序,在本例中为 32 位。
  • fvu,澄清一下:我安装了 MS Acess DB 引擎 2010。您是指启动 UDL 向导的命令吗?
【解决方案2】:

确保在 Visual Studio 中的项目上以 x86 为目标。这应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多