首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Microsoft.ACE.OLEDB.12.0提供程序未注册

Microsoft.ACE.OLEDB.12.0提供程序未注册
EN

Stack Overflow用户
提问于 2008-10-26 21:05:01
回答 9查看 265.6K关注 0票数 68

我有一个带有两个项目的Visual Studio2008解决方案(一个Word模板项目和一个用于测试的VB.Net控制台应用程序)。这两个项目都引用了一个数据库项目,该项目打开了到MS-Access 2007数据库文件的连接,并且引用了System.Data.OleDb。在数据库项目中,我有一个检索数据表的函数,如下所示

代码语言:javascript
复制
 private class AdminDatabase
   ' stores the connection string which is set in the New() method
   dim strAdminConnection as string

   public sub New()
   ...
   adminName = dlgopen.FileName
   conAdminDB = New OleDbConnection
   conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _
       "Provider=Microsoft.ACE.OLEDB.12.0"

   ' store the connection string in strAdminConnection
   strAdminConnection = conAdminDB.ConnectionString.ToString()
   My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection)
   ...
   End Sub

   ' retrieves data from the database
   Public Function getDataTable(ByVal sqlStatement As String) As DataTable
        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim da As New OleDbDataAdapter
        Dim localCon As New OleDbConnection


        localCon.ConnectionString = strAdminConnection

        Using localCon
            Dim command As OleDbCommand = localCon.CreateCommand()
            command.CommandText = sqlStatement
            localCon.Open()
            da.SelectCommand = command
            da.Fill(dt)
            getDataTable = dt
        End Using

    End Function
End Class

当我从Word 2007模板项目中调用此函数时,一切正常;没有错误。但是,当我从控制台应用程序运行它时,它抛出以下异常

ex ={“本地计算机上未注册'Microsoft.ACE.OLEDB.12.0‘提供程序。”}

这两个项目具有相同的引用,并且控制台应用程序在我第一次编写它时(一段时间前)确实可以工作,但现在它已经停止工作。我一定是错过了什么,但我不知道是什么。有什么想法吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-01-26 03:45:23

我有一个使用visual Studio2008的Visual Basic程序,它使用Access 2007数据库,并且收到了相同的错误。我发现一些线程建议将高级编译配置更改为x86,如果您运行的是64位系统,请在程序属性中找到。到目前为止,我的程序还没有出现任何问题。

票数 43
EN

Stack Overflow用户

发布于 2010-04-16 04:11:13

基本上,如果您使用的是64位计算机,则IIS7(默认情况下)不会提供数据库引擎运行的32位应用程序。下面就是你要做的:

1)确保安装了2007数据库引擎,下载地址为:http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

2)打开IIS7管理器,打开应用程序池区域。在右边的边栏上,你会看到一个选项,上面写着"Set application pool default“。单击它,将弹出一个窗口,其中包含选项。

3)向下的第二个字段表示“启用32位应用程序”,默认情况下可能设置为FALSE。只需单击显示为“false”的位置即可将其更改为“true”。

4)重启你的应用程序池(你可以通过点击RECYCLE而不是STOP然后START来做到这一点,这也会起作用)。

5)完成,您的错误消息将消失。

票数 53
EN

Stack Overflow用户

发布于 2008-10-26 22:19:58

您是否正在运行64位系统,其中数据库运行32位,而控制台运行64位?没有运行64位的MS Access驱动程序,并且会报告与您报告的错误相同的错误。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/238625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档