我有一个使用Jet OLEDB 4.0的32位.net 2.0应用程序。
它在Windows 8 32位上运行fin,但不在64位上运行fin。在64位我得到一个错误:
'Microsoft.Jet.OLEDB.4.0'提供程序未在本地注册 机。在 System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr,DataSourceWrapper& datasrcWrapper)
我知道您不能将该数据库(驱动程序)与 64 位EXE一起使用。但是我没有读过任何关于它不能使用 32 位exe。
的内容我尝试了什么:
所以我想(希望)如果我可以安装数据库支持它就会工作。
问题是,我找不到任何下载地点。
答案 0 :(得分:22)
在现代Windows上,此驱动程序不再可用,但您可以在MS站点上以Microsoft Access Database Engine 2010 Redistributable下载。如果您的应用程序是32位,请确保下载并安装32位变体,因为根据我的知识,32位和64位变体不能共存。
根据您的应用程序如何找到其数据库驱动程序,这可能就是所需要的。但是,如果您使用UDL文件还有一个额外步骤 - 您需要编辑该文件。不幸的是,在64位机器上,用于编辑UDL文件的向导默认为64位,它不会看到JET驱动程序,只是打击它在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(可能是我的错误,只是提到) [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
这应该可以让您的应用正常启动。
答案 1 :(得分:2)
确保在Visual Studio中的项目上定位x86。这应该可以解决你的麻烦。