C# 将visual studio连接到64位访问

C# 将visual studio连接到64位访问,c#,asp.net,visual-studio,ms-access,32bit-64bit,C#,Asp.net,Visual Studio,Ms Access,32bit 64bit,我遇到一个问题,我的c#(asp.net)代码无法识别access数据库引擎,即使我尝试安装多个版本的access数据库引擎 现在我找到了原因——因为Visual Studio是32位的(由于某些原因没有64位版本),所以它只能与32位引擎一起工作 不幸的是,32位和64位office产品不能共存,这使我无法安装32位引擎(我有64位office) 是否有任何方法可以在不卸载整个office软件包的情况下将visual studio连接到引擎 编辑:代码在这里 public bool Conne

我遇到一个问题,我的c#(asp.net)代码无法识别access数据库引擎,即使我尝试安装多个版本的access数据库引擎

现在我找到了原因——因为Visual Studio是32位的(由于某些原因没有64位版本),所以它只能与32位引擎一起工作

不幸的是,32位和64位office产品不能共存,这使我无法安装32位引擎(我有64位office)

是否有任何方法可以在不卸载整个office软件包的情况下将visual studio连接到引擎

编辑:代码在这里

public bool Connect(string connectionString)
{
    if (this.connection != null)
    {
        if (!this.connection.State.Equals(ConnectionState.Closed))
        {
            this.connection.Close();
        }
    }
    this.connection = new OleDbConnection(connectionString);
    this.connection.Open();
    return true;
}
使用连接字符串

Provider=Microsoft.ACE.OLEDB.12.0; Data Source='|DataDirectory|\db.accdb'; Persist Security Info=False;
我知道我应该用try-catch来包围它,我不想看到调试的异常


编辑2:我现在尝试使用Jet提供程序而不是ACE提供程序(并使用旧的access.mdb格式),因为它不是office的一部分,所以我可以使用VS支持的版本,目前似乎工作正常…

如果您可以发布用于连接到db的代码,那将非常好。 但事情是这样的。安装此发动机()32位。因为您的VisualStudio将只支持32位应用程序等

安装后,您应该能够使用以下连接字符串

Microsoft.ACE.OLEDB.12.0
Driver={Microsoft Access Driver (*.mdb, *.accdb)};
试试看,如果行得通就告诉我。此外,您的代码也会有很大帮助。
如果不起作用,发布odbc源代码的图片。打开windows search并键入odbc,然后用屏幕截图编辑您的帖子,这样我就可以知道您安装了哪些驱动程序。

我遇到了类似的问题,我有64位版本的驱动程序,没有32位版本


我通过将平台目标从任何CPU更改为x64解决了这个问题(这似乎表明是程序集的位精度(?)决定了所选驱动程序的位精度)

问题不应该出在Visual Studio上,而应该是您编译的C#应用程序。应用程序是针对32位还是64位体系结构编译的?事实上,VisualStudio本身是32位的,这对我们来说没有任何区别。它可以为其他目标体系结构编译。VS仅为32位的原因是非常合理的-请参阅本文,您具体尝试连接到access的是什么?VS中的一些数据工具?还是用C#编写的ASP.NET应用程序?不要混淆IDE和框架,它们是不同的。我尝试连接asp.net应用程序。我知道VisualStudio支持开发64位的东西,我不明白为什么64位会有问题,但似乎是这样(这里有人在另一篇文章中说安装32位引擎解决了这个问题)。我猜是因为我通过VS运行代码,它运行在32位?idk…你的连接代码是一场即将发生的灾难。需要正确处理实现(如OleDbConnection)的类。它们应该在finally块中
.Disposed
,或者使用语句包装在
中。你的代码将泄漏。我无法安装32位引擎,因为它与我拥有的64位office不兼容。我想如果没有解决方案,我将不得不重新安装office:(哦,我明白了。你试过odbc而不是oledb了。这有什么区别吗?AlsoI没有,现在我正在尝试使用Jet provider而不是ACE,如果它不起作用,我将尝试odbc。谢谢!