2017-04-21 100 views
0

我有一个问题,即我尝试安装它的多个版本,我的c#(asp.net)代码无法识别访问数据库引擎。连接Visual Studio到64位访问

现在我发现了原因 - 由于Visual Studio是32位(由于某些原因,没有64位版本),它只能与32位引擎一起工作。

不幸的是,32位和64位办公产品无法共存,并且阻止我安装32位引擎(我有64位办公室)。

有什么办法可以将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; 

PS:我知道我应该用的try-catch围绕着它,我wan't看到调试例外...

编辑2:我现在试图使用Jet提供程序而不是ACE提供程序(并使用旧访问.mdb格式),因为它不是办公室的一部分,所以我可以有一个版本VS supp orts,似乎现在工作正常...

+0

它不应该是Visual Studio的问题,它应该是你编译的C#应用​​程序。应用程序是为32位还是64位体系结构编译的? Visual Studio本身是32位的事实不应该有任何区别AFAIK。它可以编译为其他目标体系结构。 – ADyson

+0

P.S. VS只有32位的原因是非常明智的 - 见这篇文章https://www.infoq.com/news/2016/01/VS-64-bit – ADyson

+0

你试图连接到什么具体访问? VS中的一些数据工具?或者用C#编写的ASP.NET应用程序?不要将IDE与框架混淆,它们是不同的。 – mason

回答

0

如果你可以发布代码,你使用连接到数据库将是伟大的。 但是在这里。安装此引擎(https://www.microsoft.com/en-gb/download/details.aspx?id=13255)32位。由于您的Visual Studio将只有32位应用程序等

后,我安装,你应该能够使用下面的连接字符串

Microsoft.ACE.OLEDB.12.0 
Driver={Microsoft Access Driver (*.mdb, *.accdb)}; 

给一个去,让我知道是否可行。你的代码也会有很大的帮助。 如果它没有工作发布的odbc源图片。打开Windows搜索并键入odbc,然后用截图编辑您的文章,以便我可以安装您已安装的驱动程序。

+0

我无法安装32位引擎,因为它与我拥有的64位办公室相冲突。我想如果没有解决方案,我将不得不重新安装办公室:( – TulkinRB

+0

哦,我明白了你有没有尝试odbc而不是oledb。这是否有所作为。还 – noyanc

+0

我没有,现在我想使用Jet提供程序而不是ACE,如果它不起作用,我会尝试odbc。谢谢! – TulkinRB