OleDbConnection获取"外部组件抛出异常".

Ani*_*yik 9 c# oledb oledbconnection

我正在使用Windows窗体应用程序将数据导出到Excel.

应用程序是x64和x86构建的.

因此,必须安装两个版本的Microsoft Access数据库引擎才能在同一台计算机上运行该应用程序.

首先安装AccessDatabaseEngine.exe,并且AccessDatabaseEngine_x64.exe被动安装.

x64版本的应用程序正在运行

但x86版本正在增加

SEHException: "External component has thrown an exception."

 at System.Data.Common.UnsafeNativeMethods.IDBInitializeInitialize.Invoke(IntPtr pThis)
 at System.Data.OleDb.DataSourceWrapper.InitializeAndCreateSession(OleDbConnectionString constr, SessionWrapper& sessionWrapper)
 at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
 at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
 at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
 at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
 at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
 at System.Data.OleDb.OleDbConnection.Open()
Run Code Online (Sandbox Code Playgroud)

代码部分如下;

var accessConnection = new OleDbConnection(connectionString);
accessConnection.Open();
Run Code Online (Sandbox Code Playgroud)

而ConnectionString是

Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\Users\Me\Desktop\ExportTest.xls";Extended Properties="Excel 8.0;HDR=Yes";
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Kat*_*tia 5

当Visual Studio中的构建配置平台不正确时,通常会发生这种情况,在x86和x64两种构建配置平台中都可能发生。

这是由于项目的生成配置平台与计算机上安装的Microsoft Access数据库引擎之间不匹配。

为了解决此错误:

  • 在Visual Studio中更改构建配置平台
  • 确保它匹配
  • 您计算机上的Microsoft Access数据库引擎版本
  • 重新编译并运行项目
  • 现在应该解决运行时错误

  • 拒绝投票,是因为该问题明确指出他已经安装了两个版本,并且需要两个版本。只是32位版本不起作用的情况。 (2认同)