所以我了解到微软.Jet.OLEDB.4.0用于查询 Microsoft Access MDB 文件和 Excel 电子表格等数据源的数据提供程序无法在 Windows 64 位操作系统下运行。
我现在应该使用什么来查询 .NET 3.5 (C#) 应用程序中的这些文件类型,以确保 x86 和 x64 环境中的兼容性?我在互联网上搜索过,但似乎无法找到如何处理这种不兼容性的直接答案。
我还尝试过使用 ODBC 提供程序和 MSDASQL 提供程序,但没有成功,因为它们似乎抛出与 Microsoft.JET.OLEDB.4.0 提供程序在 x64 环境中使用时相同的异常(除非我做了一些明显错误的事情)其他两个提供程序,即使它们在我的 Windows XP x86 环境中运行良好)。
我发现人们说我需要使用%WINDIR%\System32\odbcad32.exe用于 x64 系统中的 ODBC 连接,但我不知道如何利用它。
x64 下抛出的异常示例:
************** 异常文本 **************
System.InvalidOperationException:“Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册。
在System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr,DataSourceWrapper&datasrcWrapper)
在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr,OleDbConnection 连接)
在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions 选项、对象 poolGroupProviderInfo、DbConnectionPool 池、DbConnection owningObject)
这里发生的情况是 x64 程序集试图调用 x86 COM 组件。 x64 应用程序不会在主 x64 注册表中看到 COM 注册,因为它们位于 wow6432node 配置单元中。
最简单的解决方法是使用 x86 目标平台构建应用程序,并让它稍后在 x64 计算机上的 WOW 上运行。该应用程序将以 32 位运行,并且能够查看其所需的 32 位 COM 对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)