1

我有以下程序,我想在 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);
        }


    }


}
4

4 回答 4

1

尝试将高级编译配置更改为 x86。这通常是因为您拥有 64 位操作系统。

在VS2008中

构建 -> 配置管理器 -> 活动解决方案平台: -> 新建 -> 键入或选择新平台 -> x86 -> 确定

编辑:

尝试以下操作:

C:\Windows\SysWOW64

打开odbcad32.exe

如果您在列表中找不到 excel,只需单击添加并添加它

于 2012-09-12T08:04:09.113 回答
0

我之前在安装了 Office 2003 而不是 Office 2007 的用户计算机上部署应用程序时遇到过这个问题。在我看来,您计算机上的 Office 版本没有正确安装。

一种可能的解决方法是将您的 Provider 更改为以前的版本,例如 Microsoft.ace.oledb.4.0,然后查看相同的错误是否仍然存在。

于 2012-09-12T13:16:33.100 回答
0

你可以注册你的程序集RegSrv32

因为您使用COM, 并且 COM 必须重新注册。

链接:http: //msdn.microsoft.com/en-us/library/ms859484.aspx

RegSrv32 允许您在注册库中注册您的 COM(microsoft.ace.oledb.12.0 提供程序)

于 2012-09-12T07:31:12.560 回答
0

您需要检查的第一件事是您的应用程序的构建配置。

  • 如果您已经在 x86 平台下构建了项目,那么为了解决您的问题,您应该在您的机器上安装以下软件包:

    1. 要使用“Microsoft.ACE.OLEDB.12.0”提供程序,您必须先 安装 Microsoft Access Database Engine 2010 Redistributable ,此安装可在以下网址获得:http: //www.microsoft.com/download/en/details.aspx ?id=13255

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

    2. 下一步是一个无法解释的解决方法,它适用于 Office 2010,即使它是 Office 2007 的数据连接组件。我不太确定为什么会这样,但它确实有效,并且已被证明在几乎所有情况下都有效。您需要安装 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 数据库引擎。

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

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

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

于 2015-09-24T08:42:53.907 回答