问题是:我无法将MS Access数据库连接到Visual Studio ASP.NET代码。
在我解释这个问题之前,我的PC是64位的,我使用的是Microsoft Visual Studio 2019和MS Access 2016(Office 365)。
首先,我导入了OleDb类,它有助于代码和数据库之间的连接。
我有一个连接类,名为Connect
:
public class Connect
{
public static string GetConnectionString()
{
string FILE_NAME = "Database3.accdb";
string location = HttpContext.Current.Server.MapPath("~/App_Data/" + FILE_NAME);
string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" + location;
return ConnectionString;
}
}
字符串
(the数据库显然位于项目文件夹内的App_Data文件夹中。)
我写了这个,作为OnClick
处理程序(当按下屏幕上的按钮时)连接到数据库:
protected void DatabaseConnect(object sender, EventArgs e)
{
OleDbConnection Conn = new OleDbConnection();
Conn.ConnectionString = Connect.GetConnectionString();
Conn.Open();
Conn.Close();
}
型
问题是连接字符串,我几乎100%确定。
显然,当Conn.Open();
行运行时,它会引发一个异常:
System.InvalidOperationException:提供程序“Microsoft.ACE.OLEDB.16.0”未在内部计算机上注册。
有什么建议或解决方法吗?提前感谢。
1条答案
按热度按时间ckx4rj1h1#
假设你已经安装了Access数据库驱动程序?
然后在大多数情况下,下一步是确定您安装的Access系统的位大小。
如果您的网站是以x32位运行,则需要安装Access x32位驱动程序。
如果您的网站是运行为x64位,那么你需要安装/使用访问x64位驱动程序。
这也意味着你不应该为你的网站使用“任何CPU”,但实际上强制构建/编译到正确的位大小。
因此,您可以强制网站(IIS)以x32位运行,然后使用Access x32驱动程序。
或者,强制网站(IIS)和您的网站以x64位运行,然后使用(安装)Access x64位驱动程序。
因此,不要猜测,也不要使用“任何”CPU,因为这将在测试期间产生不一致的结果。
这也会导致不同的行为。例如,Visual Studio 2022是VS的第一个版本,现在是x64位。这意味着如果您使用“任何CPU”并按F5,那么您的网站将以x64位运行。但是,使用vs 2019?好吧,vs 2019是一个x32位产品,在大多数情况下,“任何CPU”现在都会导致代码和站点作为x32位运行。
因此,您可以将Access驱动程序的安装版本更改为x64位,然后确保您的code + site以x64位运行(这是网站最常见的设置,但不适用于Access数据引擎)。
然而,Office/Access现在默认为x64位版本的Office只是相对较近的(过去2年),而在20年前,默认安装的是x32位的Access数据引擎。
最后但并非最不重要的?
你应该做一些努力,以避免访问的网站,并采用一个真实的基于服务器的数据库系统。每个网站,即使是最底层的饲料el-cheap-o网站托管提供某种数据库引擎,包括在即使是超级低成本的每月计划。
虽然Access可以在网站上工作,但它不会保存你的钱,在大多数情况下也不会保存你的时间。然而,比Access数据引擎不是线程安全的更糟糕的是部署问题。对于x32和x64位问题,我们有更多的问题,因此有更多的故障点要处理。这些新发现的故障点的一个很好的例子?SO上非常需要这个问题!
您可以在此处找到Access ODBC/oleDB驱动程序:
https://www.microsoft.com/en-us/download/details.aspx?id=54920
请注意,当您最终到达下载提示时,您会发现/看到2个选项,一个用于Access x32位,另一个用于Access x64位。
因此,这:
x1c 0d1x的数据
所以,你必须和
1.网站运行时的位大小
1.将MS Access驱动程序设置为站点的位大小
1.在Visual Studio中,请确保将构建选项设置为为1和2选择的选项。
因此,事实上,上述3个必须匹配您的连接才能正常工作。