繁体   English   中英

microsoft.ace.oledb.12.0提供程序未在本地计算机上注册

[英]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平台下构建项目的 ,那么为了解决问题,您应该在计算机上安装以下软件包:

    1. 为了使用“ Microsoft.ACE.OLEDB.12.0”提供程序,必须首先安装Microsoft Access Database Engine 2010可再发行组件 ,此安装位于: http : //www.microsoft.com/download/en/details.aspx ?id = 13255

      安装完成后,请尝试运行您的应用程序,如果这样可以很好地解决问题,请继续执行步骤2。

    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。

    1. 首先在本地下载文件您可以在此处下载安装: http : //www.microsoft.com/zh-cn/download/details.aspx?id=13255
    2. 使用带有“ / passive”标志的命令提示符进行安装。 在命令提示符下,运行以下命令:'AccessDatabaseEngine_x64.exe / passive'

    经过这两个步骤,在x64或AnyCPU构建配置中构建后,我设法运行了我的应用程序。 这似乎解决了我的问题。

注意:步骤的顺序似乎有所不同,因此请相应地遵循。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM