在 x64 操作系统下使用 C# 查询 Jet 数据库/Excel 文件

2024-01-06

所以我了解到微软.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(使用前将#替换为@)

在 x64 操作系统下使用 C# 查询 Jet 数据库/Excel 文件 的相关文章

  • CodeIgniter MSSQL 连接

    我正在开发一个 Web 项目 该项目将部署在运行 IIS 7 5 和 PHP 5 3 8 的 64 位 Windows 2008 Server 计算机上 系统上的数据库是Microsoft SQL Server 2008 R2 我正在 Co
  • SSIS:如何使用链接服务器:

    我已经通过 MS SQL Server Management Studio 成功添加了链接服务器 它的名称是 SQL2 Link 当我在 SSIS 中添加一个连接作为 ADO NET 连接时 它不会显示在可用选项列表中 如何将其添加为 SS
  • MS Access 和 ODBC。过滤器对话框不显示

    我的 Microsoft Access 数据库有问题通过 ODBC 连接到 Postgresql 数据库 过滤器对话框 用于使用多个可选复选框过滤数据 不起作用 编辑 不起作用 我的意思是没有可供选择的复选框 仅提供用于 A Z 和 Z A
  • 导出到 Excel 电子表格 (XLSX) 失败

    使用 ASP NET 网页 我将一些数据导出到 Excel 电子表格 XLSX 当我使用 Visual Studio 运行代码时 代码运行良好 它正在导出具有正确数据的 XLSX 文件 但在部署到测试服务器时 相同的代码会失败 它不会抛出任
  • 如何为 64 位 Windows 编译现有的 posix 代码?

    我可以使用 Cygwin 或 MinGW 但我需要最终得到 64 位代码 而不是 32 位 这是因为我将从 64 位托管 C 调用 DLL 我似乎找不到关于设置这些工具来创建 64 位二进制文 件的良好参考 另外 如果 GCC 是版本 4
  • 如何在 Windows 8 上安装 sqlite 或 postgresql 以进行 ruby​​ on Rails 设置?

    我一直在尝试安装数据库作为 ruby on Rails 设置的一部分 我正在运行 64 位 Windows 8 基于 x64 的计算机 我的ruby版本是2 1 3p242 rails版本是4 0 0 sqlite3版本是3 8 6 pos
  • ALL 的 SQL 参数

    我想知道SQL中是否有一个参数适用于所有 不是 例如 我现在正在编写一个搜索表 如果用户不在文本框中输入某些内容 则意味着忽略该特定参数并显示该字段的所有内容 我知道您可以为每种情况创建单独的 OLEDB 或 SQL 命令 并且它会起作用
  • 多步 OLE DB 操作生成错误

    我正在从 Netezza 数据源运行一个简单的 FillSchema dss new DataSet ad new OleDbDataAdapter cmd ad SelectCommand new OleDbCommand SELECT
  • 从 Perl 脚本 DBI 关闭 MSSQL 服务器

    我正在写一个 perl 脚本 其中我必须关闭我的 mssql 服务器 做一些操作 然后我必须重新启动它 我知道一种方法是使用 netstat 来停止服务 但我不能使用它 所以我尝试安装 DBI 和 DBD ODBC 模块 我可以通过以下代码
  • AxAcroPDF - Vista64 类未注册错误

    我们有一个用 C 编写的 WinForms 应用程序 它使用 AxAcroPDFLib AxAcroPDF 组件来加载和打印 PDF 文件 在 Windows XP 下一直运行没有任何问题 我已将开发环境移至 Vista 64 位 现在除非
  • 如何判断我是在 64 位 JVM 还是 32 位 JVM 中运行(在程序内)?

    如何判断应用程序运行的 JVM 是 32 位还是 64 位 具体来说 我可以使用哪些函数或属性来在程序中检测到这一点 对于某些版本的 Java 您可以使用标志从命令行检查 JVM 的位数 d32 and d64 java help d32
  • 使用 oledb 在同一个 Excel 工作表上写入多个表

    我正在创建 excel 文件XML编写器 https msdn microsoft com en us library system xml xmlwriter v vs 110 aspx由于 xml 属性和文件类型电子表格 它的文件太大
  • AOSP 的“午餐”组合是什么意思?我需要选择什么?

    我是 Android 设备 ROM 开发的新手 无论如何 我现在正在为具有 64 位处理器的中国设备构建 AOSP 我按照 source android com 上的菜单进行操作 当我运行 午餐 命令时 终端显示 午餐菜单 选择一个组合 我
  • FreePascal x64 上系统单元函数的汇编调用

    我有一些 Delphi 汇编代码 可以在 Win32 Win64 和 OSX 32 上编译并正常工作 XE2 但是 由于我需要它在 Linux 上工作 所以我一直在考虑编译它的 FPC 版本 到目前为止 Win32 64 Linux32 6
  • 2D morton 码编码/解码 64 位

    如何将给定 x y 的莫顿代码 z 顺序 编码 解码为 32 位无符号整数 生成 64 位莫顿代码 反之亦然 我确实有 xy2d 和 d2xy 但仅适用于 16 位宽的坐标 产生 32 位莫顿数 在网上查了很多 但没有找到 请帮忙 如果您可
  • 在 64 位操作系统上以 32 位运行 IIS 与以 64 位运行 IIS 有何优缺点?

    可能更适合 机架溢出 但从开发人员的角度来看 在 64 位 Windows 主机上将 IIS 同时服务于传统经典 ASP 和 NET 作为 32 位进程而不是 64 位进程运行有哪些优点和缺点 32 64 iis 服务器 相对于 32 32
  • 我应该选择哪个 VC++ 运行时版本 - 静态还是动态?

    我正在开发一个 64 位进程内 VC ATL COM 服务器 它基本上只是将所有调用重定向到进程外 COM 服务器 所以我的COM服务器基本上什么都不做 最初它在 DLL 中使用 C 运行时 MD编译器开关 我注意到当我在干净的 64 位
  • 如何使用 C# 查询远程 MS ACCESS .mdb 数据库

    我正在尝试使用 C 查询 mote MS ACCESS 数据库 mdb 文件 将文件复制到本地计算机时可以成功查询它 我只想远程放置文件 所以我的客户端程序不包含原始数据 static string m path http www xyz
  • 如何在浏览时检查客户端是否安装了 SQLNCLI10 提供程序?

    我有一个 C 网站 允许客户端从其 PC 直接连接到远程 SQL Server 数据库 通过使用第 3 方 ActiveX 控件绕过 Web 服务器 我最初使用的是SQLOLEDB提供商并且运行良好 客户端位于内部网络中 使用 Window
  • intfmt: db "%d", 10, 0 在汇编中的含义

    我最近在我的一个汇编文件的顶部看到了这个 并意识到我在打印整数的过程中花了很长时间使用它 而没有真正意识到它最初来自哪里 在我的基本汇编模板中使用 或 10 0 是什么结尾的意思是 section data intfmt db d 10 0

随机推荐