.net - 我在哪里/如何下载(和安装)适用于 Windows 8、64 位的 Microsoft.Jet.OLEDB.4.0?

标签 .net windows-8

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

它在 Windows 8 32 位上运行 fin,但不在 64 位上运行。在 64 位上,我收到一个错误:

'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine. at System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper)



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

我试过的:
  • Installed the MS Access Database Engine 2010 32 bit (and restarted)
  • 验证 msjet40.dll 位于“C:\Windows\SysWOW64\msjet40.dll”目录中,并使用 RegSvr32 注册。

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

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

    最佳答案

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

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

  • 像这样启动 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 上不起作用(可能是我的错误,只是提及)
  • 在记事本或其他文本编辑器中打开 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
    这应该允许您的应用程序正确启动。

    关于.net - 我在哪里/如何下载(和安装)适用于 Windows 8、64 位的 Microsoft.Jet.OLEDB.4.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13811179/

    相关文章:

    web-applications - 如何指定固定站点磁贴的文本颜色?

    touch - Windows 8 触摸切换

    c# - 如何在 C# 中使用 "using"而不获取 "InvalidOperationException"?

    java - pHash 开源感知哈希库有哪些替代方案?

    c# - 在 .NET 中读取文件内容更改

    vb6 - vbscript 与 Windows 8 的兼容性问题

    c# - 在 Windows 8 XAML 中创建项目填充到控件宽度的水平列表?

    c# - 典型的 IoC 容器用法——向下传递数据

    c# - 有没有办法更好地解析字符串?

    javascript - 滑出网站的着陆页