![](/img/trans.png)
[英]The 'Provider=Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine
[英]the microsoft.ace.oledb.12.0 provider is not registered on the local machine
我有以下程序要在MS-Access中插入值。我收到错误消息“ microsoft.ace.oledb.12.0提供程序未在本地计算机上注册”
我已经按照一些开发人员的建议安装了数据库引擎,但仍然出现错误。
我正在使用VS-2008和MS-Access-2007在Vista计算机上编写代码。
请帮助我解决错误
公共局部类Form1:表单
{
public Form1()
{
InitializeComponent();
}
OleDbConnection con;
OleDbCommand cmd;
private void btnSubmit_Click(object sender, EventArgs e)
{
try
{
con = new OleDbConnection("Provider=Microsft.ACE.Oledb.12.0;Data Source=C:\\Users\\Satish\\Documents\\Testing.accdb");
con.Open();
string cmdText = "Insert Into UserDetail (UsrName,Age,Address,MobileNo) Values ('" + txtName.Text.ToString().Trim() + "','" + txtAge.Text.ToString().Trim() + "','" + txtAddress.Text.ToString().Trim() + "','" + txtMobile.Text.ToString().Trim() + "')";
cmd = new OleDbCommand(cmdText, con);
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
尝试将高级编译配置更改为x86。 这通常是因为您具有64位操作系统。
在VS2008中
构建->配置管理器->活动解决方案平台:->新建->键入或选择新平台-> x86->确定
编辑:
请尝试以下操作:
去
C:\Windows\SysWOW64
打开odbcad32.exe
如果您在列表中找不到excel,只需单击“添加”并添加它
您可以使用RegSrv32
注册程序RegSrv32
因为使用COM
,所以必须重新注册COM。
链接: http : //msdn.microsoft.com/en-us/library/ms859484.aspx
RegSrv32允许您在注册库中注册COM(microsoft.ace.oledb.12.0提供程序)
在将应用程序部署在已安装Office 2003而不是Office 2007的用户计算机上之前,我曾遇到过此问题。听起来像是您计算机上的Office版本未正确安装。
一种可能的解决方法是将您的提供程序更改为以前的版本,例如Microsoft.ace.oledb.4.0,然后查看是否仍然存在相同的错误。
您需要检查的第一件事是应用程序的构建配置。
如果您是在x86平台下构建项目的 ,那么为了解决问题,您应该在计算机上安装以下软件包:
为了使用“ Microsoft.ACE.OLEDB.12.0”提供程序,必须首先安装Microsoft Access Database Engine 2010可再发行组件 ,此安装位于: http : //www.microsoft.com/download/en/details.aspx ?id = 13255 。
安装完成后,请尝试运行您的应用程序,如果这样可以很好地解决问题,请继续执行步骤2。
下一步是一个无法解释的变通办法,即使它是Office 2007的数据连接组件,也可以在Office 2010中使用。我不太确定为什么这样做,但事实证明它可以工作,并且几乎在所有情况下都可以工作。 您需要安装2007 Office System驱动程序:数据连接组件 ,该安装位于: http : //www.microsoft.com/download/en/confirmation.aspx?id=23734 。
安装完成后,请尝试运行您的应用程序,这应该可以解决该问题。
如果您尝试运行在x64或AnyCPU平台下构建的应用程序 ,我建议您首先验证它是否在x86平台下按预期运行。 如果它不能在该x86平台上运行,请执行第一部分中的步骤并验证它是否按预期运行。
我确实读过,包括OLEDB数据库驱动程序在内的MS Access驱动程序仅在x86平台下有效,在x64或AnyCPU平台下不兼容。 但这似乎是不正确的。 我在构建x86时验证了我的应用程序正在运行,然后使用被动标志安装了Access Database Engine。
经过这两个步骤,在x64或AnyCPU构建配置中构建后,我设法运行了我的应用程序。 这似乎解决了我的问题。
注意:步骤的顺序似乎有所不同,因此请相应地遵循。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.